启用windows的程序崩溃自动dump功能

以管理员身份 运行 :OpenDump.bat 其本质是写注册表。
运行后: 任何程序崩溃都会在C:\CrashDump 产生dmp文件(比较大,约50到200M)。
至少在Win7、Win10的电脑,Win10的平板上运行正确。


 

OpenDump.bat

@echo off
echo 正在启用Dump...
reg add "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\Windows Error Reporting\LocalDumps"
reg add "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\Windows Error Reporting\LocalDumps" /v DumpFolder /t REG_EXPAND_SZ /d "C:\CrashDump" /f
reg add "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\Windows Error Reporting\LocalDumps" /v DumpType /t REG_DWORD /d 2 /f
reg add "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\Windows Error Reporting\LocalDumps" /v DumpCount /t REG_DWORD /d 10 /f
echo Dump已经启用
pause
@echo on

其中DumpType代表的含义是:

0 = Create a custom dump  
1 = Mini dump  
2 = Full dump  

CloseDump.bat 关闭此功能

@echo off
echo 正在关闭Dump...
reg delete "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\Windows Error Reporting\LocalDumps" /f
echo Dump已经关闭
pause
@echo on

也可以在程序中设置异常处理函数

保存数据仅是拯救措施,更重要的是找到错误的根源。若能在崩溃的同一时候,程序自己主动记录下崩溃时的执行信息,将有助于修正工作。微软提供了“DbgHelp”错误调试技术。调用相关功能就可以保存程序崩溃时的信息,然后借助WinDbg软件就能分析出当时的执行状况。调用“DbgHelp”的MiniDumpWriteDump函数保存以“.dmp”为后缀的Dump文件,该文件能被WinDbg读取并分析。

在头文件里包括“#include <Windows.h>”。

加入头文件“#include <DbgHelp.h>”,在Pro文件里加入“LIBS += -lDbgHelp”。目的是链接DbgHelp库。

发布了45 篇原创文章 · 获赞 4 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/ly1390811049/article/details/102826242