网上有很多相关文章,不过不是外文的就是不够清晰。我还是自己记录一下吧。
一、 首先是被dump的工程,一定要有以下的设置,缺一不可:
C/C++/General/Debug Information Format = Program Database (/Zi).
Linker/Debugging/Generate Debug Info= Yes (/DEBUG)
Linker/Debugging/Generate Program Database File= $(TargetDir)$(TargetName).pdb
接下来,务必保存好生成的pdb文件!所有的pdb文件和source code必须严格匹配,否则当客户反馈了一个错误时,即使有minidump文件也无法找到对应的代码。
二、用vs2008分析dump文件
- 双击minidump文件(*.dmp)。默认会启动vs2008。
- 菜单Tools/Options, Debugging/Symbols,增加PDB文件路径。注:如果minidump文件与pdb文件在同一目录,就不用设置这个了。
- 若调试的程序需要微软基础库的PDB信息,可以增加一个路径为:
- http://msdl.microsoft.com/download/symbols
- 在界面下方Cache Symbol From symbol…选择本地存储这些Symbols的路径。 注:如果本地已存储过微软基础库的pdb,就直接按照此步操作设置本地路径,不必执行上一步操作了。
设置代码路径:
刚打开的dmp工程,进入解决方案的属性。在这里输入源程序的代码路径。注:一定是sln所在的路径,而不是vcproj的路径!
按F5,debug吧。
----------------------
设置禁止优化,可以在调试中看到便令的值,