不同的场景,需要用不同的方式取DMP。
1、procdump:适用于监控运行过程的崩溃、CPU、内存泄漏随机取DMP。
2、windbg: 更适用于启动过程崩溃。
3、任务管理器:运行过程非崩溃异常,好处是不需要安装工具。
4、注册表配置:运行过程随机崩溃。
5、代码实现异常捕获:运行过程随机崩溃。
通过procdump工具
微软的工具,这里有https://learn.microsoft.com/zh-cn/sysinternals/
通过命令创建,创建的dmp默认在当前工具路径
通过Windbg工具
微软的工具,可以去微软官方下载。
通过任务管理器
创建转储文件。
通过注册表配置
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\WindowsError Reporting\LocalDumps
添加如下项:
DumpCount: 最多保留多少个DMP文件,值类型REG_SZ。
DumpFolder: 保存DMP文件的文件夹,值类型REG_SZ。
DumpType: 保存dmp类型,值类型REG_SZ。
其中DumpType代表的含义是:
0 = Create a custom dump
1 = Mini dump
2 = Full dump
如此一来,一旦程序崩溃,系统会在C:\CrashDump下生成一个dump文件。
通过代码创建dmp
在代码中初始化异常捕获生成dmp代码功能。百度很多,待整理。