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();
代码扩展说明(自动备份pdb&exe):
增加SavePDB.bat,放到解决方案同级目录;
属性->后期生成事件->命令行 填入(包含引号) "$(SolutionDir)SavePDB.bat"
即可在生成exe时自动备份exe和pdb
更多细节参考SavePDB.bat内的注释