WinDbg

WinDbg可以从微软官方下载, http://www.microsoft.com/whdc/devtools/debugging/default.mspx
还有常用的软件可以从互联网上搜索,有的其实是在Visual Studio集成的。exeScope、Dependency Walker、Microsoft Spy++等等,有的时候也要用到Ultra Edit。还有一些偶尔要用到的,也是可选的,比如WinHex等。对于虚拟机,我采用Microsoft Virtual PC 2007
10-20
### WinDbg 简介 WinDbg微软提供的一款功能强大的调试工具,属于 Windows 调试工具包(Windows SDK)的一部分,广泛用于内核模式用户模式下的应用程序调试[^1]。它支持源码级调试、内存分析、崩溃转储(dump file)分析以及实时进程调试。 ### 主要功能 WinDbg 提供了图形化界面(GUI)命令行界面(CLI),允许开发者或系统工程师深入分析蓝屏错误(BSOD)、驱动程序问题、内存泄漏死锁等复杂故障[^1]。其核心能力包括符号文件(PDB)解析、调用栈回溯、寄存器状态查看、内存内容检查与修改。 调试过程中可加载正确的符号路径,以便将地址映射到函数名,提升分析效率: ```cmd .sympath SRV*C:\Symbols*https://msdl.microsoft.com/download/symbols ``` 加载符号后可通过 `.reload` 命令强制重新加载模块符号[^1]。 ### 内核调试设置 进行双机内核调试时,需在目标机配置启动选项,例如使用串口或网络连接与主机通信。以启用串口调试为例,在目标系统执行: ```cmd bcdedit /debug on bcdedit /dbgsettings SERIAL DEBUGPORT:1 BAUDRATE:115200 ``` 主机端 WinDbg 需设置相同的串口参数以建立连接[^1]。 对于基于网络的内核调试(KDNET),可配置如下: ```cmd bcdedit /dbgsettings NET HOSTIP:192.168.1.100 PORT:50000 KEY:1.2.3.4 ``` 随后在主机 WinDbg 中选择“File > Kernel Debug > Net”并填写对应信息即可连接[^1]。 ### 分析崩溃转储文件 当系统发生蓝屏时,会生成 `MEMORY.DMP` 或 `minidump` 文件。使用 WinDbg 打开后运行 `!analyze -v` 可自动分析异常原因: ```cmd !analyze -v ``` 该命令输出包括异常代码、引发异常的模块名称、堆栈摘要及建议修复方向[^1]。常见异常如 `PAGE_FAULT_IN_NONPAGED_AREA`(0x00000050)通常指示无效的内存访问。 ### 扩展命令与脚本支持 WinDbg 支持通过 `.load` 加载扩展模块(如 `ext`, `mex`, `sos` 用于 .NET 调试)。例如加载通用扩展: ```cmd .load ext ``` .NET 应用程序调试中可使用 `sos.dll` 查看托管堆、线程异常信息: ```cmd .loadby sos clr ; 对于 .NET 4.0+ !clrstack ; 显示托管调用栈 !dumpheap -stat ; 统计托管堆对象 ``` ### 脚本自动化 WinDbg 允许通过 `.scriptload` 加载 JavaScript 或 C++/JS 扩展脚本实现自动化分析任务: ```cmd .scriptload C:\Scripts\my_analyzer.js ``` JavaScript 脚本示例(列出所有线程): ```javascript function invokeScript() { host.diagnostics.debugLog("Enumerating threads...\n"); return data.model.getThreads().forEach(t => { host.diagnostics.debugLog(`Thread ID: ${t.id}, Stack: ${t.stack}\n`); }); } ``` ### 用户模式调试示例 附加到运行中的进程进行调试: ```cmd .attach 1234 ``` 设置断点并继续执行: ```cmd bp main g ``` 其中 `bp` 设置断点,`g` 表示继续运行直到命中断点[^1]。 ### 符号服务器配置 正确配置符号路径对有效调试至关重要: ```cmd .symfix .symfix+ C:\AdditionalSymbols ``` `.symfix` 自动设置微软公共符号服务器路径,附加路径可用于私有符号[^1]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值