写点什么

Windbg 调试工具介绍

作者:dvlinker
  • 2022 年 6 月 30 日
  • 本文字数:1714 字

    阅读完需:约 6 分钟

Windbg调试工具介绍

Windbg 是我们最常用的 C++软件异常分析工具,也是最强大的分析工具之一,我们今天就来详细介绍一下 Windbg 的相关内容。


1、概述


Windbg 是微软提供的 Windows 平台下强大的用户态和内核态调试利器,给我们分析 Windows 上软件的异常提供了极大的便利和有力的支持,比原始的直接查看代码去分析异常的效率要高的多。Windbg 在某些方面甚至要比微软的 Visual Studio 还要强大。作为 C++开发人员,必须要掌握常用的调试技巧,必须要能分析和排查软件运行过程中遇到的各种异常,必须要熟悉 Windbg 或 GDB 调试器的使用。Windows 平台上主要使用 Windbg,Linux 平台上主要使用 GDB 调试器。


Windbg 是我们日常工作中用的最多的软件异常分析工具,Windbg 可以静态分析 dump 文件,也可以附加到目标进程上进行动态调试。当然有时我们也会使用 SPY++、Dependency Walker、Process Explorer、Process Monitor、API Monitor、IDA Pro 等工具来辅助问题的排查。

2、Windbg 的使用


Windbg 的主界面如上所示。Windbg 可以查看到发生异常的那条汇编指令以及各个寄存器中的值,可以查看函数调用堆栈,可以查看函数调用堆栈中函数调用传递的参数信息,可以查看到内存中变量的值。


Windbg 在排查死循环、死锁、异常崩溃方面,有着独到的优势。我们既可以用 windbg 静态分析 dump 文件,也可以使用 windbg 对目标进程进行动态调试。


Windbg 入门的门槛比较低,只需掌握一些常用的 Windbg 命令即可,使用这些命令去查看函数调用堆栈等信息。另外,有时需要深入研究问题时,可能还要用 IDA 反汇编工具去查看二进制文件中的汇编代码的上下文,因为汇编代码才能最直观地看出软件崩溃的最直接的原因。所以,除了掌握 Windbg 之外,我们还需要学会使用 IDA 反汇编工具。


3、Windbg 版本


对于 Windbg 的版本,我们这边有无需安装的 6.0 绿色版本,也有需要安装的最新的 10.0 及以上的版本,这里推荐大家使用 10.0 及以上的版本。

10.0 及以上版本相对 6.0 版本,要智能许多,要查看相关内容时,不再需要输入各种复杂 windbg 命令,只需要点击 windbg 中显示信息中的超链接,皆可以去查看。而在 6.0 版本中,是不支持超链接的,命令是需要手动输入的,很多命令比较长比较复杂,使用起来很不方便。


在使用 windbg 分析问题时,我们需要查看具体的函数名和变量信息,是要去加载 pdb 符号库文件的。6.0 版本不能加载 VS2017 编译生成的 pdb 文件。6.0 版本的 Windbg 好像是 2006 左右发布的,比较老了,VS2010 编译出来的 pdb 是可以识别出来的,而 VS2017 是 2017 年发布的,修改了 pdb 文件的部分格式,所以老版本的 Windbg6.0 识别不了,所以在处理 VS2017 编译出来的程序时,是需要使用 10.0 及以上版本的。

4、Windbg 的获取与安装


最新版本的 windbg 可以到微软的官方网站中下载,下载页面的地址如下:

https://docs.microsoft.com/zh-cn/windows-hardware/drivers/debugger/debugger-download-tools


新版本的 windbg 已经内置到 Windows 的 SDK 包中,在打开的页面中找到“用于 Windows (WinDbg) 的调试工具”栏:


点击“Windows SDK”超链接,先将 Windows SDK 在线安装包 winsdksetup.exe 下载下来。


双击 winsdksetup.exe,弹出如下的安装界面:


安装界面中有两个选项,一个是在线安装,一个是将安装包下载到本地来。我比较喜欢后者,把离线安装包下载下来后,可以随时随地安装,当使用软件的用户出问题时,我们可以把 windbg 的安装包发给他,让其安装一下,我们直接再其机器上使用 Windbg。


不管选择哪种方式,按照向导走,都到下面这一步:


我们只需要勾选“Debugging Tools for Windows”选项,然后取消其他所有的勾选项,我们此处只需要安装 windbg 即可,不需要其他组件。


如果选择的是下载离线安装包,则打开路径后会看到两个版本,如下:


X86 对应 32 位版本,X64 对应 64 位版本,可以根据自己的需要去安装。双击 exe 安装包后,安装过程一闪而过:


没有一步一步的安装向导,安装界面消失了就表示安装完成了。安装完成后,可以到开始菜单中找 WIndows Kits 文件夹,在该节点下可以找到 Windbg.exe,如下所示:


也可以在系统中搜索“windbg”找到 Windbg.exe 程序。


如果大家用的是 Win10 操作系统,也可以到 Windows 自带的应用商店中去下载最新版本的 windbg。


Windbg 等工具的下载链接如下:

链接:https://pan.baidu.com/s/1ID6_0RSYKbiy_tzfYDX3Ew 提取码:tn6i


发布于: 刚刚阅读数: 3
用户头像

dvlinker

关注

宁静致远 2022.06.19 加入

CSDN博客专家,C++高级软件工程师。从事C++软件开发十多年,通过数年的软件开发实践,积累了大量的实战经验,特别在C++软件调试及异常排查方面积累了丰富经验。现任C++高级软件工程师,并担任C++软件开发培训讲师!

评论

发布
暂无评论
Windbg调试工具介绍_c++_dvlinker_InfoQ写作社区