当前位置: 首页 > web >正文

使用 WinDbg 启动程序并捕获崩溃转储的完整流程

1. 启动 WinDbg 并配置符号路径

首先打开 WinDbg,配置符号服务器以便获取调试符号:

.symfix                 // 设置默认微软符号服务器
.sympath+ C:\MySymbols  // 添加自定义符号路径
.reload                 // 重新加载符号

2. 启动目标应用程序

方法1:直接通过 WinDbg 启动

File → Open Executable...
或
Ctrl+E

选择你的可执行文件,WinDbg 会立即启动该程序。

方法2:使用命令行启动

windbg.exe -o "C:\Path\To\YourApp.exe" [参数]

3. 设置崩溃时自动捕获转储

在程序运行前设置自动转储捕获:

.symopt+0x40           // 启用延迟符号加载
.dump /ma C:\dumps\crash.dmp  // 设置转储路径(但此时不会执行)

更推荐设置崩溃时自动执行的命令:

.events                // 查看当前事件过滤器
sxe -c ".dump /ma C:\dumps\crash.dmp; q" av  // 访问冲突时捕获转储并退出
g                     // 开始运行程序

4. 程序崩溃时的处理

当程序崩溃时,WinDbg 会自动中断,此时:

手动创建转储文件(如果未设置自动捕获)

.dump /ma C:\dumps\crash_manual.dmp

分析崩溃点

!analyze -v            // 自动分析崩溃原因
kb                     // 查看调用堆栈

5. 高级转储选项

创建完整转储(推荐)

.dump /ma C:\dumps\full_crash.dmp

/ma 选项表示创建包含完整内存、句柄和线程信息的转储。

创建小型转储

.dump /m C:\dumps\mini_crash.dmp

6. 转储后分析

捕获转储后,可以重新用 WinDbg 分析:

windbg.exe -z C:\dumps\crash.dmp

注意事项

  1. 确保有足够的磁盘空间存放转储文件(完整转储可能很大)

  2. 对于服务程序,可能需要附加(attach)而不是直接启动

  3. 转储路径需要有写入权限

  4. 对于.NET应用程序,考虑加载SOS扩展进行更深入分析

http://www.xdnf.cn/news/968.html

相关文章:

  • ANSYS Fluent -地下市政供热管道泄漏模型-note
  • 职坐标IT培训:人工智能职业跃迁路径
  • Timm 加载本地 huggingface 模型
  • requestAnimationFrame是什么?【前端】
  • Unreal如何实现一个Highlight高亮效果
  • 【PyQt5】@QtCore.pyqtSlot()的作用
  • 深度学习-全连接神经网络-2
  • Fluent 内置双向流固耦合FSI 液舱晃荡仿真计算
  • Java Lambda表达式指南
  • 4月21日复盘
  • 飞控系统的鲁棒性模块详解!
  • GPU软硬件架构协同设计解析
  • 蓝牙WiFi模组rtl8821cs在Android14调
  • 推荐系统/业务,相关知识/概念2
  • 【LaTeX】图片大小调整和并排放置
  • 一文详解卷积神经网络中的卷积层和池化层原理 !!
  • 大模型相关 XSS等 漏洞事件深度剖析
  • 进程和线程(2)
  • 跨境电商行业新周期下的渠道突围策略
  • [python] set
  • JavaScript day5
  • 一文了解相位阵列天线中的真时延
  • 深度学习:人工智能的核心驱动力
  • C语言——数组
  • Sentinel源码—7.参数限流和注解的实现二
  • 字符串拼接问题的最佳解决方案
  • Shell常用功能详细使用
  • STM32 栈地址起始位置不正确
  • 【GIT】为什么要变基下拉,变基下拉失败,提示没有暂存如何解决?
  • 华为OD机试2025A卷七日集训第6期 - 按算法分类,由易到难,循序渐进,玩转OD(Python/JS/C/C++)