一、内嵌代码创建
1、在主函数Main()调用的最前面增加下面两行:
SetUnhandledExceptionFilter(UnhandledExceptionFilterEx);
PreventSetUnhandledExceptionFilter();
2、给Release版本程序增加调试信息,产生PDB文件:
a) 项目属性>C++>调试格式为Program Database;
b) 项目属性>C++>程序优化为禁止优化;
c) 项目属性>链接>调试>产生调试信息为允许;
d) 项目属性>链接>调试>产生调试文件Program Database File为Yes;
二、Windbg工具命令创建
打开Windbg工具,找到Crash进程,选择附加到进程调试Attach to Progress,在命令行输入:.dump /o/f H:/mydump.dum,后面是保存路径。
三、任务管理器创建
打开操作系统的任务管理器,选择Crash进程点击鼠标右键,选择创建转储文件,会在指定的位置创建dump文件。
得到dump文件后,将exe,pdb和dump文件放到一起,使用VS2015打开dump文件,选择Debug With Native Only进行调试,在解决方案属性中选择源码路径,再调试并进入异常断点处,或找到调用堆栈Call Stack,就能找到函数的调用以及源码错误位置。