DoubleLi

qq: 517712484 wx: ldbgliet

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::

2013年12月22日

摘要: 查找并指定符号文件和源文件;指定符号加载行为、使用符号和源服务器上;加载符号自动或在要求。内容查找符号 (.pdb) 文件查找源文件查找符号 (.pdb) 文件说明在之前的 Visual Studio 版本与 2012 中,调试在远程计算机上的管理的代码需要符号文件还查找了远程计算机。现在,这已经不成问题了。所有符号文件必须本地计算机或位于 Visual Studio选项对话框的调试/符号页上指定的位置。如果调试器搜索 .pdb 文件|符号文件的原因需要完全匹配可执行文件?|指定符号位置和加载行为|使用符号服务器以查找符号文件不在本地计算机|查找并加载符号,在调试时|设置符号文件的编译器选项程 阅读全文
posted @ 2013-12-22 16:20 DoubleLi 阅读(20546) 评论(0) 推荐(0)

摘要: 前言:WinDbg是微软开发的免费源代码级的调试工具。WinDbg可以用于Kernel模式调试和用户模式调试,还可以调试Dump文件。本文的讨论是在安装了Debugging Tools for Windows的前提下进行的,下载地址可以参考我之前的文章。WinDbg对于dump文件的调试可以通过菜单设置Symbol File Path、Source File Path,并可设置多个路径。1、打开Dump格式文件打开WinDbg,通过菜单[File]à[Open Crash dump]选择dump文件打开,也可通过CMD打开Dos命令窗口,切换到WinDbg所在目录,利用命令:WinD 阅读全文
posted @ 2013-12-22 16:17 DoubleLi 阅读(3736) 评论(0) 推荐(0)

摘要: 很多软件通过设置自己的异常捕获函数,捕获未处理的异常,生成报告或者日志(例如生成mini-dump文件),达到Release版本下追踪Bug的目的。但是,到了VS2005(即VC8),Microsoft对CRT(C运行时库)的一些与安全相关的代码做了些改动,典型的,例如增加了对缓冲溢出的检查。新CRT版本在出现错误时强制把异常抛给默认的调试器(如果没有配置的话,默认是Dr.Watson),而不再通知应用程序设置的异常捕获函数,这种行为主要在以下三种情况出现。(1)调用abort函数,并且设置了_CALL_REPORTFAULT选项(这个选项在Release版本是默认设置的)。(2)启用了运行时 阅读全文
posted @ 2013-12-22 16:16 DoubleLi 阅读(1137) 评论(0) 推荐(0)

摘要: 前言:通过drwtsn32、NTSD、CDB等调试工具生成Dump文件,drwtsn32存在的缺点虽然NTSD、CDB可以完全解决,但并不是所有的操作系统中都安装了NTSD、CDB等调试工具。了解了mini dump文件格式后,完全可以程序自动生成Dump文件。本文主要讨论以下内容:1、运行原理2、程序修改3、注意事项一、运行原理当程序遇到未处理异常(主要指非指针造成)导致程序崩溃死,如果在异常发生之前调用了SetUnhandledExceptionFilter()函数,异常交给函数处理。MSDN中描述为:Issuing SetUnhandledExceptionFilter replaces 阅读全文
posted @ 2013-12-22 16:15 DoubleLi 阅读(946) 评论(0) 推荐(0)

摘要: 前言:利用drwtsn32或NTSD进行程序崩溃处理,都可以生成可用于调试的dmp格式文件。使用VS2005打开生成的DMP文件,能很方便的找出BUG所在位置。本文将讨论以下内容:1、程序编译选项2、利用VS2005分析dump文件3、常见问题讨论一、程序编译选项PDB files contains all debug information like type definition and function prototype.When application crashes, we need the PDB files to analyze the root cause, so make 阅读全文
posted @ 2013-12-22 16:14 DoubleLi 阅读(1911) 评论(0) 推荐(0)

摘要: .pdb文件,是VS生成的用于调试的符号文件(program database),保存着调试的信息。在VS的工程属性,C/C++,调试信息格式,设置/Zi,那么VS就会在构建项目时创建PDB文件。在这里要区分两种情况:1、构建静态库时,可以在工程属性 –> C/C++ –> 输出文件–>程序数据库名 设置生成的pdb文件名称,如果不指定,默认是生成为VCx0.pdb,这里x是VS版本号,例如用VS2005,就会生成VC80.pdb。这里就会产生一个疑问,编译静态库时默认生成的.pdb文件名字都一样,那引用这个静态库的项目最后能找到正确的.pdb文件吗?答案是肯定的,因为VS会 阅读全文
posted @ 2013-12-22 16:05 DoubleLi 阅读(18263) 评论(1) 推荐(0)

摘要: 当应用程序被链接以后,代码被逐一地翻译为一个个的地址,优化以后的代码可能初看起来更是面目全非。每当我们使用vs或者windbg等微软的调试工具进行调试的时候,我们可以方便地使用变量名来查看内存、可以使用函数名称来下断点、甚至可以指定某个文件的某一行来下断点。这一切背后是什么在指导调试器工作呢?答案就是符号——pdb或者dbg文件(.NET自己有元数据,符号不需要元数据已有的信息)。 程序运行的时候,计算机只需要逐条执行指令即可。而与源代码对应的关系是完全不需要知道的。这就给调试带来了困难,所以无论什么编译都有自己的一套用于对应代码和可执行程序。各种编译器都有自己保存类似这种对应关系的办法,有. 阅读全文
posted @ 2013-12-22 16:03 DoubleLi 阅读(2089) 评论(0) 推荐(0)