WinDbg DUMP 调试

WinDbg DUMP 调试


设置符号路径

可以在命令行中通过 .sympath 命令来设置符号路径,也可通过 菜单项 来设置。
符号路径有两种,一是本地路径,例如:D:\MySymbols;二是远程服务器路径,例如 SRV*CachePath(本地缓存)*RomotePath(远程服务器)
多个符号路径通过 “;” 连接。

  • 命令行
.sympath D:\MySymbols;SRV*D:\MsSymbols*http://msdl.microsoft.com/download/symbols;SRV*D:\AppSymbols*http://***.cn/symbols/app
  • 菜单(File -> Symbol File Path…)
D:\MySymbols;SRV*D:\MsSymbols*http://msdl.microsoft.com/download/symbols;SRV*D:\AppSymbols*http://***.cn/symbols/app

如上操作设置了三个符号路径,首先是本地路径 D:\MySymbols,然后是从 Microsoft符号服务器 缓存符号文件到 D:\MsSymbols,最后是从 APP符号服务器 缓存符号文件到 D:\AppSymbols

基础命令

  • 命令
    • 基本命令:40多个
      • 使用 “?” 查看所有
    • 元命令:100多个
      • 使用 “.help” 查看所有
        • .help /D a* : 链接方式显示 a 开头的命令
        • .hh : 打开CHM
      • 命令前加前缀 “.”
    • 扩展命令
      • .chain : 查看所有扩展
      • !模块名.help : 查看模块内的命令(!ext.help)
      • 命令前加前缀 “!”
  • 基本设置
    • 清屏命令:.cls
    • 设置进制命令:n [8|10|16]
    • 处理器模式指令:.effmach [](Effective Machine Type,.effmach x86)
    • 格式化显示:.formats 0xa
  • 调试
    • 挂载进程:Windbg –p PID;Windbg -pn 进程名
    • 打开DUMP文件:.opendump 文件名
    • 解挂进程:.detach
    • 结束当前调试会话:q | qq | qd
    • 黑科技
      • .crash : 引发一个系统蓝屏,生成 Dump 文件
      • .reboot : 使系统重启,不产生 Dump 文件

调试方法

  • 帮助
? : help on commands that affect the debugee
.help : help on commands that affect the debugger
.hh command : view the on line help file
!help : help on the extension dll at the top of the chain (e. g., SOS)
  • 符号加载
.sympath : 设置符号路径
.symfix : 自动将符号路径设置为 MS 公有符号服务器
.reload : 枚举已加载的模块,寻找符号文件
.reload /f /i Test.exe : 强制加载
    - /f : 强制加载
    - /i : 不检查 pdb 的版本信息
    - /v : 将搜索过程中的详细信息都显示出来
    - .reload /f Test.exe=0x400000,0x<imagesize>,0x<timestamp>
!sym : 加载选项
    - !sym noisy : 可以将整个加载symbol的过程打印出来
    - !sym quiet : 不显示 symbol 加载过程
  • 符号匹配
.symopt:查看当前设置的符号选项
.symopt+ 0x40:exe和pdb松匹配
.symopt- 0x40:恢复严格匹配
.reload /f /i test.exe:忽略匹配,强制加载
  • 加载 SOS 扩展
.loadby sos clr
!eeversion // 查看sos版本
  • 查看堆栈
!analyze // 非托管
    - v : 显示异常的详细信息
    - f : 强制将任何事件都当作异常来分析

!dumpstack // 托管+非托管
!EEStack : 对每个活跃的线程调用 DumpStack
    - ee : 托管代码
    - short : “感兴趣” 的线程

!clrstack  // 托管
    !ClrStack -l : 显示局部变量信息
    !ClrStack -p : 显示托管代码帧栈的所有参数
    !ClrStack –a :-l & -p

~*e!clrstack
~0e!clrstack

!pe : Print Exception
!PrintException <address>
  • 查看对象
.exr : displays the contents of an exception record
.cxr : displays the context record saved at the specified address

!DumpObj <Object address>
!IP2MD <Code address>
!DumpIL <MethodDesc>
  • 查看文件头
lm // list loaded modules
    - v : 详细信息
    - m *?* : 通配符
    - a ? : 地址
!dh AppName.exe
  • 线程调试
!threads : 查看所有线程(可以看到哪个线程有异常)
~*s : 切换线程
!runaway : 查看线程CPU运行时间
.ttime : 查看线程耗时
!threads : 查看所有托管线程
!threads : view managed threads
!clrstack : view the managed call stack
!dumpstack : view combined unmanaged & managed call stack
!clrstack -p : view function call arguments
!clrstack –l : view stack (local) variables
!name2ee module class : view addresses associated with a class or method
!dumpmt –md address : view the method table & methods for a class
!dumpmd address : view detailed information about a method
!do address : view information about an object
!dumpheap –stat : view memory consumption by type
!dumpheap –min size : view memory consumption by object when at least size
!dumpheap –type type : view memory consumption for all objects of type type
!gcroot address : view which object are holding a reference to address
!syncblk : view information about managed locks
.load C:\CurrectFiles\sos (C:\Windows\Microsoft.NET\Framework\v4.0.30319)

相关工具

  • DIA SDK
  • DumpBin.exe
  • C:\Program Files (x86)\Debugging Tools for Windows (x86) (Microsoft)
    • symstore.exe : 符号存储(创建目录层级)
    • symsrv : 符号管理与获取
    • symchk.exe
      symchk.exe D:\MsSymbols\cfgmgr32.dll\4CE7B78727000\cfgmgr32.dll -v -s D:\MsSymbols
      symchk.exe D:\AppName.exe -v -s SRV*D:\AppSymbols*http://***.cn/symbols/app
      
    • cdb.exe : 命令行调试
  • breakpad\crashpad (Google)
    • Client : 捕获异常,生成 DUMP 并上报
    • Symbol dumper : 根据调试信息生成符号文件
      • dump_syms : 生成符号文件、符号文件转换
      • generate_breakpad_symbols.py:自动生成所有符号文件(包括目录)
    • Processor : 调试器
      • minidump_stackwalk : 调试

参考资料

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
回答: 使用Windbg调试dump文件的步骤如下: 1. 首先,确保你已经安装了WindbgWindbg通常在安装Visual Studio时一同安装,你可以在安装目录中搜索windbg.exe来确认是否已安装\[1\]。 2. 配置符号文件目录。符号文件是用于将内存地址转换为可读的函数名和行号的文件。你可以从微软的服务器上下载符号文件。在系统环境变量中设置_NT_SYMBOL_PATH变量,指定符号文件的目录\[2\]。 3. 打开Windbg,选择"File"菜单,然后选择"Open Crash Dump"。浏览并选择你要调试dump文件。 4. 在Windbg的命令行中,输入"!analyze -v"命令,以获取有关dump文件的详细分析报告。这将帮助你了解导致崩溃的原因。 5. 根据分析报告中的信息,你可以使用Windbg的其他命令来进一步调试程序。例如,你可以使用"lm"命令查看加载的模块,使用"kb"命令查看调用堆栈等。 6. 如果你需要附加到正在运行的进程进行调试,可以使用Windbg的"Attach to Process"选项。这对于调试偶发性问题非常有用\[3\]。 希望这些步骤对你有帮助! #### 引用[.reference_title] - *1* *2* [Windows下关于windbg 调试 dump文件过程的环境配置以及注意事项](https://blog.csdn.net/qq_37059136/article/details/129746624)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] - *3* [Windbg调试dump文件](https://blog.csdn.net/bigger_belief/article/details/124476879)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Ironyho

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值