当程序崩溃时如何自动产生crash dump(内存错误)

温馨提示:很多手机浏览器,比如百度app,都可以语音播报本网页。方法打开本网页之后,点击 APP下方或上方"功能"按钮,里面有一个"语音播报"按钮,点击即可收听。

今天跟大家分享如何让程序崩溃时启动WinDBG 自动产生dump 在预设的路径下,这个方法特别适用在你没办法重现问题而客户的环境又没办法提供给工程师除错时,就可以把dump 带回offline 分析。

设定

切到底下的Registry key 可以看到

HKEY_LOCAL_MACHINE\Software\Microsoft\WindowsNT\CurrentVersion\AeDebug

如果没有Auto 的栏位,必须新增并把值设成1 。

因为我的开发电脑有安装visual studio 所以default 的debugger 是visual studio 的just-in-time debugger,当程序崩溃时会自动触发visual studio 帮你attach 到项目文件即时除错。

但假设今天你不是负责除错的开发人员,只想产生dump 保留给后续相关人员分析,可以通过WinDBG 达到一样的功能。步骤很简单,只需要将下图Debugger 的值改成如下的范本:

"[WinDBG path]" -p %ld –c ".dump /ma /u [dump path];.kill;qd" -e %ld –g

1、[WinDBG path] - windbg.exe 的所在路径

2、[dump path] - 产生dump 的所在路径(文件夹必须存在且具有写入的权限)

实际范例如下:

"C:\Program Files (x86)\Windows Kits\10\Debuggers\x64\windbg.exe" -p %ld –c ".dump /ma /u D:\CrashDump.dmp;.kill;qd" -e %ld –g

通过设定Registry 就能让dump 自动产生啰! 如果你需要产生crash 的process 测试,可以执行上一篇

#电脑小知识#

转载原文地址:https://baijiahao.baidu.com/s?id=1708954829105820410

作者:百家号四川人在香港

声明:本文仅代表作者观点,不代表本网站平台立场