使用dump和pdb文件定位程序崩溃位置

Dump文件是进程的内存镜像。可以把程序的执行状态通过调试器保存到dump文件中。Dump文件是用来给驱动程序编写人员调试驱动程序用的,这种文件必须用专用工具软件打开,比如使用VS、WinDbg打开。

用法参考链接: 用dump和pdb文件定位程序崩溃的位置_lemon-l的博客-CSDN博客_dump pdb

用到的核心API函数MiniDumpWriteDump详解:minidump详细介绍_huanongying131的博客-CSDN博客_minidump

Tips:

1.函数MiniDumpWriteDump使用参数MiniDumpWithFullMemory能保存变量的值,但生成的dump会大很多.

2.遇到弹出崩溃对话框,有"重试"按钮的一定要点"重试".

2.发布exe时,切记保存同版本的pdb文件;或一起发布,客户回传时将exe,pdb,dump一起回传.

3.将dump,pdb,exe放入生成时的目录(Debug),打开dump即可,不必设置符号路径

4.用VS2010打开dump,能看到调用老式函数崩溃时的源码位置(如:strcpy)

示例代码:

DumpTest: dump在MFC的使用测试, 封装dump类; 在InitInstance使用一次即可 (gitee.com)

用法:

1.将DumpFileManager.h和DumpFileManager.cpp包含到项目中

2.在App类的InitInstance()调用 DumpFileManager::GetIns()->SetCrashHandler();

使用dump和pdb文件定位程序崩溃位置_第1张图片

代码扩展说明(自动备份pdb&exe):

增加SavePDB.bat,放到解决方案同级目录;

属性->后期生成事件->命令行 填入(包含引号) "$(SolutionDir)SavePDB.bat"

即可在生成exe时自动备份exe和pdb

更多细节参考SavePDB.bat内的注释

        

你可能感兴趣的:(c++)