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作为默认调试器, 调试本机应用程序

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

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
  • 3923

WinDbg调试器

你可以从微软网站上下载到的调试器: · KD-内核调试器。你可以用它来调试蓝屏一类的系统问题。如果是开发设备驱动程序是少不了它的。 · CDB-命令行调试器。这是一个命令行程序 · NTS...
  • chenlycly
  • chenlycly
  • 2013年06月20日 19:41
  • 947

使用WinDbg内核调试

WINDOWS调试工具很强大,但是学习使用它们并不容易。特别对于驱动开发者使用的WinDbg和KD这两个内核调试器(CDB和NTSD是用户态调试器)。 本教程的目标是给予一个已经有其他调试工具使用经验...
  • whatday
  • whatday
  • 2014年01月26日 09:46
  • 4915

WinDBG从Ring3到Ring0跟踪CreateFileW的执行流程

本次跟踪的系统版本: 调试机(宿主机):WIN7 64位旗舰版 目标机(虚拟机):WIN7 32位旗舰版 1、在虚拟机里打开一个记事本,然后Ctrl+Break中断操作系统 2...
  • sqzxwq
  • sqzxwq
  • 2015年09月03日 08:40
  • 968

C#操作webservice(经典入门教程及实例)

Web Service基本概念  Web Service也叫XML Web Service WebService是一种可以接收从Internet或者Intranet上的其它系统中传递过来的请求,轻量...
  • baidu_27474941
  • baidu_27474941
  • 2016年09月18日 10:08
  • 1128

WinDbg调试器使用

WinDbg配置和使用基础     WinDbg是微软发布的一款相当优秀的源码级(source-level)调试工具,可以用于Kernel模式调试和用户模式调试,还可以调试Dump文件。 1. Wi...
  • wind19
  • wind19
  • 2014年01月15日 14:12
  • 847

编写windbg调试器扩展 入门篇1

我博客的左侧专栏曾经转过windows下编写调试器的一系列文章,这类文章是从零打造调试器,而这篇文章是介绍如何为windbg编写调试器扩展命令。 0.前言     windbg的命令有很多,其中以"!...
  • lixiangminghate
  • lixiangminghate
  • 2017年08月10日 00:13
  • 430

WinDbg 入门教程

WinDbg 入门教程 介绍 在我的职业生涯中,我看到我们大多数都是使用Visual Studio来进行调试,而不是用其它许多免费的调试器。你可能有许多理由来使用这样的调试器,比如,在你家里的机器...
  • sunnylion1982
  • sunnylion1982
  • 2013年09月30日 16:50
  • 642

用windbg内核模式调试用户态程序

使用内核调试会话也可以执行一些用户态调试任务,比如向位于用户态的模块设置断点。但这样做与使用用户态调试器有什么不同呢?我们就以向NTDLL.dll模块的ZwTerminateProcess函数(Stu...
  • lixiangminghate
  • lixiangminghate
  • 2016年10月18日 13:10
  • 1161
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:WinDbg入门教程(1)-调试器的基础知识
举报原因:
原因补充:

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