事件是什么
1000 与 1001 是应用崩溃的两件套:1000 记录应用程序错误,包含进程名、故障模块、异常码与偏移;1001 是 Windows 错误报告生成的记录,带报告 ID,可据此到转储目录找到对应的 dump 文件。两者配合,是定位崩溃根因最快的入口。
怎么用故障模块
1000 事件里的故障模块往往是一个 dll,但它不一定是元凶:调用它的宿主进程、模块加载顺序与版本不匹配同样可疑。合理做法是先确认该模块的版本与来源(是否被替换、是否与系统不兼容),再结合转储用调试器查看调用栈。
基本信息
| 适用平台 | Windows 7/10/11 与各 Server,应用程序日志默认记录 |
|---|---|
| 1000 内容 | 应用程序错误:进程、故障模块、异常码、模块版本与偏移 |
| 1001 内容 | WER 报告,含报告 ID,可定位对应的崩溃转储 |
| 转储位置 | %LOCALAPPDATA%\CrashDumps 或 ProgramData\Microsoft\Windows\WER |
典型使用场景
- 应用频繁崩溃时快速定位崩溃进程与故障模块
- 统计某段时间内的崩溃次数,评估影响面
- 拿到报告 ID 去找对应的转储文件做深入分析
- 判断崩溃是否由系统更新引入的某个组件触发
- 为厂商提交问题单提供完整的崩溃证据
常用示例
常用示例
Get-WinEvent -FilterHashtable @{LogName='Application'; Id=1000,1001} -MaxEvents 20 | Select-Object TimeCreated, Id, @{n='App';e={$_.Properties[0].Value}}, @{n='Module';e={$_.Properties[3].Value}}, @{n='Code';e={$_.Properties[6].Value}} | Format-Table -AutoSize
:: 按进程统计一周内的崩溃次数
Get-WinEvent -FilterHashtable @{LogName='Application'; Id=1000; StartTime=(Get-Date).AddDays(-7)} | Group-Object { $_.Properties[0].Value } | Sort-Object Count -Descending
:: 查找转储文件
Get-ChildItem "$env:LOCALAPPDATA\CrashDumps" -ErrorAction SilentlyContinue字段读法
| 字段 | 含义 | 判读 |
|---|---|---|
| 事件 1000 | 应用程序错误 | 含进程名与异常码 |
| 故障模块 | 抛出异常的模块 | 不一定是元凶,需查调用方 |
| 异常码 | 例外类型编号 | 区分访问冲突、栈溢出等类型 |
| 模块版本 | 出问题模块的版本 | 与已知问题版本比对 |
| 事件 1001 | WER 报告 | 报告 ID 可用于定位 dump |
| 转储目录 | 崩溃转储存放位置 | 需确认 WER 已配置生成转储 |
拿到故障模块后先查它的版本与来源:升级、回滚或换用兼容版本通常是最先尝试的处置。
崩溃转储默认可能未生成,需要先确认 WER 的配置,否则 1001 里只有报告 ID 而找不到文件。