Server 2008使用Windows Error Reporting保存Crash Dump

Windows Server 2008从Windows Vista SP1开始支持Windows Error Reporting,通过注册表配置,可以在User-mode application崩溃时自动保存Crash Dump,而不会显著影响性能。开启此功能涉及修改`HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindowsWindows Error ReportingLocalDumps`下的`DumpFolder`、`DumpCount`、`DumpType`等键值,允许定制dump位置、数量和类型。这在测试和生产环境中都可帮助快速调查问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在Windows Server做性能测试的同学都会有这样的经历,发现W3WP或者其他相关程序crash以后,开发的第一反应经常是:“有没有 crash dump?我需要看这个来调查问题。” 在Server 2003中我们总是要借助于第三方工具来抓取Crash Dump,不仅很麻烦而且会影响系统的性能,因此在产品环境中用起来也就更加谨慎。

好的一点是,自从Windows2008/Windows Vista SP1 开始,Windows自身就开始提供Windows Error Reporting,在注册表中进行配置后,当user-mode application crash之后,Windows会自动抓取Crash Dump并保存在指定目录下。经过最近的测试,在我们的环境中并没有发现因为打开这个功能造成的明显性能下降。


这个功能在Windows中默认是关闭的,想打开的话修改方式如下:

1. 运行Regedit

2

### 如何使用 WinDbg 创建和捕获 Dump 文件 当需要诊断应用程序中的问题时,创建 dump 文件是一个非常有用的工具。通过这些文件可以在不重现错误的情况下分析程序的状态。 #### 方法一:手动触发 Mini-Dump 或 Full-Dump 的生成 对于正在运行的应用程序,在 Windbg 中可以通过命令行来强制生成 dump 文件: ```plaintext .dump /ma c:\path\to\save\file.dmp ``` 这条指令将会保存一个完整的内存映像到指定路径下[^2]。 #### 方法二:配置 Windows 自动创建 Dump 文件 为了确保即使 Windbg 没有及时捕捉到异常也能获得 dump 数据,可以设置操作系统自动为崩溃的应用程序生成 mini-dumps。这通常是在系统属性->高级系统设置->启动和恢复选项里完成的。也可以利用注册表编辑器修改 `HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\Error Reporting` 下的相关键值[^3]。 #### 方法三:编写代码模拟特定条件下的 Crash 并生成 Dump 作为开发者还可以主动控制何时生成 dump 文件。例如下面这段 C++ 测试代码展示了怎样故意制造一次访问冲突从而引发 crash,并最终由系统或调试器处理此事件并记录相应的 dump 信息: ```cpp void myfunc(){ printf("join to myfunc...\n"); // 故意造成空指针解引用导致crash char* p = NULL; memcpy(p, "hello word", strlen("hello word")); } ``` 一旦上述函数被执行,则会产生未处理的异常状况,进而促使操作环境按照预设策略响应——比如调用调试器或者写入 minidump 到磁盘上等待后续审查。 #### 方法四:使用 ADPlus 工具自动化收集 Debugging Information ADPlus 是一款附带于 Debugging Tools for Windows 套件内的实用程序,专门用来监控目标应用并在其遭遇严重错误时自动生成详细的 debug 报告连同关联的日志与 dumps。执行 adplus.vbs 脚本即可开始监视选定的服务或进程实例[^4]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值