Windows应用崩溃捕获

您所在的位置:网站首页 windows应用程序错误提示窗口如何屏蔽其他应用软件 Windows应用崩溃捕获

Windows应用崩溃捕获

2024-07-14 15:06| 来源: 网络整理| 查看: 265

Windows应用崩溃捕获 一、序言

​ 最近发现我们自己的程序会因为各种各样的原因异常崩溃,但却没有日志记录,也没有任何弹窗提示,电脑设置了定时重启,重启自动运行后程序就可以正常运行了,但这之间崩溃的原因没有办法获取,很是苦恼。因此要想办法对其进行监控。

​ 最开始我的想法是这样的:写一个脚本,每隔2s进行一次截屏,再查找进程,如果发现进程已经消失,则保存截屏图片,再写日志记录崩溃时间,这样就可以在之后看到程序崩溃前 1~2 秒的状态。BUT,我们的程序直接在主机运行,没有显示器,需要虚拟一个显示器,这样一来,对系统资源的消耗就太大了。对于扣扣索索的我,这显然不是好的解决办法。况且,这样做根本是治标不治本,即便获得了截图,也没有什么参考价值,毕竟程序自动运行,崩溃肯定是由于内部问题(例如内存溢出呀,当然只是举例,不可能犯这么低级的错误)造成。经过我不懈的查找,终于发现了一名大佬分享的文章,经过努力实现了我的目的,特此记录。

参考大佬地址 https://developer.aliyun.com/article/229733

二、实现

我们使用windows自带的崩溃捕获dump的功能,只需要我们手动设置一下即可使用。

1.启动 Windows Error Reporting Service 服务。

在这里插入图片描述 在这里插入图片描述

2.移除默认的调试器。

打开注册表编辑器(win+r 输入 regedit)

如果你的机器装了VS开发工具,会在注册表里写入调试器地址,需要把它删除

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\AeDebug\Debugger HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework\DbgManagedDebugger

在 64 位 操作系统上也删除以下注册表项:

HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Windows NT\CurrentVersion\AeDebug\Debugger HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\.NETFramework\DbgManagedDebugger 3.执行下面注册表脚本,添加程序崩溃捕获dump(这个设置是捕获所有的程序崩溃的dump,可能会产生的文件比较多也比较大)

将下面的内容复制粘贴到 txt 中(注意第4行的 C:\CrashDump 是你dump文件的保存路径,可根据需要进行更改)

@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

点击 file,选择另存为,保存类型选择所有文件,文件名后缀为 bat,编码选择 ANSI。 在这里插入图片描述 以管理员身份运行生成的 .bat 文件,得到如下结果,表明设置完成。 在这里插入图片描述

4.测试结果

编写C++程序:

#include using namespace std; int mian() { int i = 1/0; //此处用1除以0造成程序崩溃 return 0; }

编译生成 test.exe,运行,观察 C:\CrashDump文件下是否生成对应的 .dmp 文件。

在这里插入图片描述

表明我们配置成功。

三、分析dump文件。

要分析 dump 文件需要使用 windbg 这个工具,可从腾讯软件中心下载。

下载后的安装均为默认,此处省略。

安装完成后,我们点击开始在所有应用中找到它

在这里插入图片描述

打开后点击 Ctrl+D,选择我们刚才生成的文档。

可以看到如下结果

在这里插入图片描述

至此,我们就可以利用 windows 自带的异常捕获捕获到应用的崩溃原因,简直不要太爽。



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3