好的,阿杰 😄,我给你整理一份 WinDbg 新手入门到进阶的超详细教程,从安装到基本调试,再到常用技巧和实战思路,适合新手慢慢入门。
🛠️ WinDbg 使用超详细教程(新手入门版)
一、WinDbg 简介
- WinDbg 是 Windows 平台的官方调试工具,由微软提供,功能强大,可调试:
- Windows 内核(Kernel Mode)
- 用户模式程序(User Mode)
- Crash Dump(崩溃转储)
- 适用场景:
- 程序崩溃分析(分析 .dmp 文件)
- Windows 内核调试
- 复杂异常定位
二、WinDbg 安装
1. 安装方式
- 推荐方式:通过 Microsoft Store 安装最新 WinDbg Preview
- 或通过 Windows SDK 安装传统 WinDbg
2. 安装步骤
- 打开 WinDbg 官方下载页面
- 下载 WinDbg Preview 或 Windows SDK
- 按提示安装,建议选择 Debugging Tools for Windows
- 安装完成后,可以在开始菜单找到 WinDbg Preview 或 WinDbg (x64/x86)
三、WinDbg 基础界面介绍
窗口/面板 | 功能 |
---|
Command 窗口 | 输入调试命令,控制程序执行 |
Locals / Watch | 查看局部变量和表达式 |
Call Stack | 调用堆栈查看 |
Registers | CPU 寄存器值查看 |
Memory | 内存查看/修改 |
Modules | 当前加载模块列表 |
四、基本使用流程(用户模式程序)
1. 打开程序调试
File → Open Executable → 选择程序 → 打开
File → Attach to Process → 选择进程 → 附加
2. 设置断点
bp main
bp mysource.cpp:25
bp mymodule!MyFunction
3. 程序运行控制
命令 | 功能 |
---|
g | Go,继续执行 |
t | Step into,单步进入 |
p | Step over,单步跳过 |
bl | 列出所有断点 |
bd / be / bc | 禁用 / 启用 / 删除断点 |
五、查看信息
1. 查看调用堆栈
k ; 查看调用堆栈
kb ; 查看带参数的调用堆栈
2. 查看寄存器
r ; 查看寄存器
r eax ; 查看 EAX
r eax=1 ; 修改寄存器值
3. 查看内存
dd 0x00400000 L100 ; 查看十六进制内存
dc 0x00400000 L100 ; 查看内存字符
db 0x00400000 L100 ; 查看内存字节
4. 查看模块信息
lm ; 查看已加载模块
lmv mymodule ; 查看详细模块信息
六、分析 Crash Dump 文件
1. 打开 Dump 文件
File → Open Crash Dump → 选择 .dmp 文件
2. 查看异常信息
!analyze -v
- 输出包括:
- 异常代码(Exception Code)
- 出错模块
- 调用堆栈
- 可能原因与建议
七、常用扩展命令
命令 | 功能 |
---|
!analyze -v | 自动分析 crash dump |
!handle | 查看句柄信息 |
!threads | 查看线程信息 |
!peb | 查看进程环境块 |
!teb | 查看线程环境块 |
!dlls | 查看加载 DLL 列表 |
!heap | 查看堆信息 |
八、调试小技巧
- 符号表配置
.sympath SRV*C:\Symbols*https://msdl.microsoft.com/download/symbols .reload
- 使用 Watch 表达式
- 右键 → Add Watch,可以观察变量实时变化。
- 保存调试会话
File → Save Workspace
,便于下次直接加载。
- 日志记录
File → Log File → Start Logging
,记录调试信息。
九、学习建议(新手必看)
- 先熟悉 基本命令与界面,不要一上来就调复杂内核。
- 学习 Crash Dump 分析,这是 WinDbg 最常用场景。
- 搭配 Visual Studio 调试,理解断点、堆栈、寄存器概念。
- 慢慢学习 扩展命令和脚本调试,例如
.script
或 .foreach
命令。
发表回复