windbg使用教程

windbg使用教程

windbg是微软开发的用于在win平台调试程序的强大工具,支持内核态、用户态调试。可以调试程序、正在运行的进程和动态库,本教程主要介绍在用户态模式下调试应用程序。

相比VS调试程序,windbg开箱即用,不需要安装负责的编译环境,方便在生产环境调试。但是缺点是windbg上手难度大,对新手非常不友好。

安装

微软应用商店

建议直接从微软应用商店中安装,直接安装最新版,注意该版本不带有gflags等工具,需要安装相关工具需要从下载。

windows sdk

可以从Windows SDK安装包中安装,选择只安装**Debugging Tools for Windows,**下载地址见:Windows SDK - Windows 应用开发 | Microsoft Developer

可以只安装**Debugging Tools for Windows,**其它的组件按需安装即可。

基本使用

功能布局

与所有调试工具一样,windbg提供基本的调试功能,例如断点,步过、步入、步出。具有反汇编窗口、寄存器窗口、内存窗口、调用堆栈、局部变量窗口、线程/进程窗口和输出窗口。支持按钮交互控制和命令控制台。

基本命令

命令可以参考微软官方命令手册:Using WinDbg and the debugger commands - Windows drivers | Microsoft Learn

以下是我收集和翻译的Cheat Sheet,用于速查命令。

运行程序

加载PDB文件

默认条件下会加载可执行文件路径下的pdb文件,使用lm命令可以判断是否加载。如果没有加载可以使用.sympath+命令手动加载符号文件目录

1
.sympath+ C:\Your\PDB\Directory

再强制重新加载符号

1
.reload /f

加载源文件

可以通过上方的打开源码按钮来加载源码,也可以使用.open命令打开源码文件。

1
.open -a C:\Path\To\file.cppp

如上图布局所示,基本的调试环境已经全部加载完成了。

其他

wingdb功能非常强大,但是想要快速定位和解决内存的问题还是不足,需要借助gflags工具进行快速定位。以下为一些比较好的博客推荐:

https://blog.hawkhai.com/blog/2020/12/26/memory-leak-gflags#%E5%AE%8C%E5%85%A8%E9%A1%B5%E5%A0%86

作者

echo

发布于

2025-05-29

更新于

2025-06-02

许可协议

评论