WinDbg入门教程(1)-调试器的基础知识

翻译 2007年10月09日 17:54:00

WinDbg 入门教程

介绍

在我的职业生涯中,我看到我们大多数都是使用Visual Studio来进行调试,而不是用其它许多免费的调试器。你可能有许多理由来使用这样的调试器,比如,在你家里的机器上没装开发环境,但是一个程序一次次的崩溃。其实根据堆栈的dump就可以判断出IE的崩溃是否是由于一个第三方的插件。

对于WinDbg,我目前为止还没有发现很好的快速入门的教程。这篇文章结合实例讨论了WinDbg的使用。我首先假设你熟悉调试的基本概念:stepping in, stepping out,断点以及远程调试的基本概念。

注意,这本来是座位一个入门的文档,你可以阅读并且开始使用WinDbg. 如果对于特定的命令有疑问,请查阅WinDbg的文档。你可以在任何微软提供的调试器中使用这篇文章中提到的命令,比如在VS的命令行窗口中。

这篇文章是基于WinDbg 6.3.

这仅仅是一系列关于调试技术的文章中的第一篇。在下一篇文章中,我会解释如何针对调试器编写扩展DLL.

调试器一览

下面大概介绍了你可以从微软网站上下载到的调试器:

·         KD-内核调试器。你可以用它来调试蓝屏一类的系统问题。如果是开发设备驱动程序是少不了它的。

·         CDB-命令行调试器。这是一个命令行程序

·         NTSD-NT调试器。这是一个用户模式调试器,可以用来调试用户模式应用程序。它实际上是一个CDBwindows UI增强。

·         WinDbg-用一个漂亮的UI包装了KDNTSDWinDbg即可以调试内核模式,也可以调试用户模式程序。

·         VS, VS.net-使用同KDNTSD相同的调试引擎,并且相比于同样用于调试目的的WinDbg,提供了功能更丰富的界面。

调试器之间的比较

功能

KD

NTSD

WinDbg

Visual Studio .NET

内核模式调试

Y

N

Y

N

用户模式调试

 

Y

Y

Y

非托管调试

Y

Y

Y

Y

托管调试

 

Y

Y

Y

远程调试

Y

Y

Y

Y

附加到进程

Y

Y

Y

Y

从进程分离

Y

Y

Y

Y

SQL调试

N

N

N

Y

WinDbg

WinDbg实际上包装了NTSDKD并且提供了一个更好用的用户界面。它也提供了命令行开关,比如最小化启动(-m),附加到一PID指定的进程(-p)以及自动打开崩溃文件(-z)。它支持三种类型的命令。

·         Regular commands(比如: k) 用来调试进程

·         Dot commands(比如:.sympath)用来控制调试器

·         Extension commands(比如: !handle)-这些命令属于可以用来添加到WinDbg的自定义命令;它们用扩展DLL的输出函数来实现。

PDB文件

PDB文件指的是链接器生成程序数据库文件(Program database files)。私有的PDB文件包括私有以及公有符号,源代码行号,类型,局部以及全局变量。公有的PDB文件不包含类型,局部变量以及源代码行号信息。

源地址

下一篇  WinDbg入门教程(2)-各种调试场景介绍 

WinDbg入门教程-调试器的基础知识

WinDbg 入门教程介绍在我的职业生涯中,我看到我们大多数都是使用Visual Studio来进行调试,而不是用其它许多免费的调试器。你可能有许多理由来使用这样的调试器,比如,在你家里的机器上没装开...
  • iamoyjj
  • iamoyjj
  • 2009年04月17日 21:34
  • 4606

如何修改默认调试器-windbg

如何修改默认调试器-windbg windows nt 程序崩溃时,自动弹出,windows停止工作,可设置默认调试器: 运行:Regedit->打开windows注册表: 32位系统:HKEY_L...
  • flm007
  • flm007
  • 2016年12月06日 15:15
  • 784

Windbg 设置成默认调试器

使用全路径运行windbg 带 -I参数,必须大写的I c:\windbg\windbg.exe  -I
  • slient001
  • slient001
  • 2015年05月01日 18:04
  • 1301

Qt学习(五) Qt5的调试器

今天,
  • wwkaven
  • wwkaven
  • 2014年07月10日 14:00
  • 1594

编写windbg调试器扩展 高级篇

其实,前面几篇文章已经可以写出一个调试器扩展,但是编写这样的调试器扩展,其所能提供的功能并不比windbg脚本多。通过这篇文章,我希望大家能从中了解一些调试器扩展所特有的能力(要不然还费神写什么代码)...
  • lixiangminghate
  • lixiangminghate
  • 2017年08月15日 22:15
  • 299

使用WinDbg作为默认调试器, 调试本机应用程序

今天在写一个文件合并小工具,  因为程序较小,  编译成Release版带调试符号, 直接运行的. 后来改了点东西, 运行时突然报错. 我以前已经运行过(WinDbg -I), 在本机已经将Win...
  • LostSpeed
  • LostSpeed
  • 2013年07月01日 17:05
  • 3933

QT配置调试器windbg (Debugging Tools for Windows)

首先在这里下载调试器windbg (Debugging Tools for Windows) : http://download.csdn.net/download/zhang957411207/4...
  • fuzimango
  • fuzimango
  • 2017年02月11日 16:49
  • 2586

Windbg 的 即时调试

即时调试在WinDbg的文档的”Enabling Postmorten Debugging”部分对此有很详细的讨论。简而言之,你可以把WinDbg设置成默认的即时调试器,命令就是:Windbg –I。...
  • shuixin536
  • shuixin536
  • 2010年06月25日 16:37
  • 1592

WinDbg调试器:启动程序时自动连接调试器方法

当我们在调试ie浏览器时,一定会遇到一个比较烦恼的问题,那就是通过调试器启动ie后,发现ie还会再启动第二个进程,实际上通过windbg启动的集成根本是不干活的,此时调试工作就无法继续下去~遇到这种问...
  • QHH_QHH
  • QHH_QHH
  • 2015年12月15日 15:18
  • 411

win7下windbg无法找到正确调试符号问题

1.下载win7的WDK:http://www.microsoft.com/en-us/download/details.aspx?id=11800 我下下来的是GRMWDK_EN_7600_1.IS...
  • wxqian25
  • wxqian25
  • 2014年01月17日 14:28
  • 4124
收藏助手
不良信息举报
您举报文章:WinDbg入门教程(1)-调试器的基础知识
举报原因:
原因补充:

(最多只允许输入30个字)