基于VS2017的DUMP文件调试
一、背景
在项目开发过程中,经常会遇到莫名其妙的bug,甚至于不能重现,不好跟踪,导致不好解决。有种方法是尽可能详细的日志记录,有助于追踪bug。但依然不是特别直观。
在查找资料中,发现其实VS已经通过dump文件很好得解决了这个问题。
Dump文件是进程的内存镜像。可以把程序的执行状态通过调试器保存到dump文件中。Dump文件是用来给驱动程序编写人员调试驱动程序用的,这种文件必须用专用工具软件打开,比如使用WinDbg打开。
二、使用
需要用到四个文件:exe、dll、pdb、dump文件,需要注意的是这四个文件必须是一一对应,是同时生成的,不然可能导致调试不成功。
PDB(Program Data Base),意即程序的基本数据,是VS编译链接时生成的文件。PDB文件主要存储了VS调试程序时所需要的基本信息,主要包括源文件名、变量名、函数名、FPO(帧指针)、对应的行号等等。因为存储的是调试信息,所以一般情况下PDB文件是在Debug模式下才会生成。在VS中可以进行设置,在Release版本中也可以生成PDB文件。(https://blog.csdn.net/wqfhenanxc/article/details/80674223)
在Release下设置两处地方即可生成PDB文件:
(1)
(2)
在打开EXE崩溃后,生成.dump文件,将其拷贝至包含exe和pdb文件同一目录,打开dump文件,即可进行调试。
测试例程,可参考以下博文:
https://blog.csdn.net/qq_23350817/article/details/108760060
强烈推荐以下博文:
window下使用SetUnhandledExceptionFilter捕获让程序的崩溃
https://blog.csdn.net/bingqingsuimeng/article/details/73497198