NetRoc's Blog

N-Tech

 

WinDbg 文档翻译----3

 

cc682/NetRoc

http://netroc682.spaces.live.com/

调试器

本节包含以下内容:

工具包中的调试器

安装和设置

调试器操作

调试符号

崩溃转储文件

安全事项

调试器参考

工具包中的调试器

本文档描述4Microsoft调试器的工作方式:

CDB 和 NTSD

KD

WinDbg

查看工具包中的完整列表以及他们的文档,参见工具列表和文档

CDNNTSDWinDbg可以在Microsoft Windows 95Windows 98、何Windows Millennium Edition上进行用户模式调试。但是,安装需要一些额外的步骤,并且功能上会有限制;查看Windows 95, 98, 和 Millennium获得更多信息。要在这些操作系统上进行内核模式调试,需要使用WDeb系列调试器(例如,wdeb386.exe),或者Microsoft Windows System Debugger(debugger.exe)。查看Windows Millennuim DDK获得关于这些工具的更多信息。

Microsoft Visual Studio调试器也可以在所有Windows系统上进行用户模式调试。可以查看Visual Studio的文档获得关于这些调试器的详细资料。

CDB NTSD

CDBNTSD是可以用来调试用户模式程序的命令行工具。除了启动的方式之外,这两个工具基本上是一样的。

本文档将使用“CDB”来同时提及CDBNTSD除非专门注明,否则所有提到CDB的地方,同样适用于NTSD只有极少数技术是只能在CDB上工作或者只在NTSD上工作的。这些不同点都会在适当的地方指明。

CDB

Microsoft控制台调试器(Microsoft Console Debugger (CDB))是基于控制台字符界面的程序,它可以对Windows用户模式的内存和结构进行低层次分析。

CDB在用于调试正在运行的或者刚刚崩溃的程序时(“live analysis”)非常强大,但是很容易配置。它可以用于研究正在运行的程序行为。在应用程序出错的情况下,CDB可以用于获得调用堆栈,或者查看有问题的参数。由于是基于字符界面,它能够很好的支持网络访问(使用远程访问服务器)

使用CDB,可以显示和执行程序代码,设置断点,查看或者改变内存的值。CDB可以通过“反汇编”分析二进制代码并显示汇编代码,也可以直接分析源代码。

由于CDB能通过地址或者全局符号访问内存地址,你可以通过名字而不是地址来访问内存,这使得定位和调试特定的代码变的容易。也可以显示反汇编的机器码。CDB支持调试多个线程和进程。它是可扩展的,并能够读写分页和非分页内存。

如果目标应用程序本身也是控制台程序,目标和CDB将共用一个控制台。如果想和目标程序分开使用控制台,可以使用-2 command-line option选项。

NTSD

Microsoft NT Symbolic Debugger (NTSD)CDB调试器的变种。启动的时候,NTSD会创建一个新的文本窗口,而CDB继承原有的命令行窗口,除此之外,他们没有任何区别。

CDB一样,NTSD完全支持控制台程序和Windows程序。(命名为“控制台调试器”,是为了指明CDB是一个控制台程序,而非指目标程序必须是控制台程序。)

使用 start 命令也可分离出来新的控制台窗口,所以下面两种格式的命令会有相同效果:

start cdb parameters 
ntsd parameters 


System32 目录下的NTSD

鉴于CDB只是Windows调试工具包的一部分,而NTSD同时包含在工具包和Windows系统中。所以在Windowssystem32目录下可以找到NTSD

如果准备使用在system32目录下的NTSD,有两个重要的地方需要注意:

  • 该版本NTSD不支持通过调试器的远程调试
  • 该版本的NTSD可能和当前文档中描述的版本不同。

为了避免这些问题,建议只使用Windows调试工具包中的NTSDCDB

用内核调试器控制CDB或者NTSD

CDBNTSD的输入输出能够被重定向,所以可以通过内核调试器进行控制(KD或者WinDbg)

这项技术如果用在CDB上,CDB的窗口将会出现,但是不能进行输入输出。如果使用在NTSD上,则不会有控制台窗口出现。

从内核调试器控制NTSD是非常有用的,因为它是一个非常轻量级的调试器,在运行目标程序的机器上,它几乎不会增加任何额外开销。这种结合可用于调试系统进程、关机、或者系统刚刚启动之后的情况。查看使用内核调试器控制用户态调试器 获得更详细的信息。

KD

Microsoft Kernel Debugger (KD) 是一款基于字符界面的控制台程序,可以在所有NT内核操作系统上对在内核模式下的活动进行深度分析。

KD可用于调试内核模式程序和驱动程序,或者监控系统本身的行为。KD支持多处理器的调试。

一般来说,KD并不运行在被调试的机器上。内核模式调试一般需要两台机器(主控机 目标机)。

大多数KD的命令不能像在CDB, NTSD, WinDbg中一样针对特定进程或者线程。

调试不同平台的目标机

KD可以支持调试基于x86Itanium或者x64平台的目标机。

调试器可以自动检测目标运行的机器平台,所以不需要在KD的命令行中指定了。旧的名字(使用I386KD或者IA64KD的名字)不再使用。

WinDbg

Microsoft Windows Debugger (WinDbg) 是一款强大的基于窗口的调试工具。它可以进行用户模式 内核模式 调试。

WinDbg支持完全的针对Windows内核、内核模式驱动、系统服务、以及用户模式应用程序和驱动的源码级调试。

WinDbg在进行源码级调试时,使用Microsoft Visual Studio调试符号格式。它可以访问具有PDB文件的模块的所有符号和变量,以及任何通过COFF格式符号文件(例如Windows .dbg文件)暴露出来的公开的函数名。

WinDbg可以查看源代码、设置断点、查看变量(包含C++对象)、查看调用堆栈及内存。用户可以通过它的调试器命令窗口适用大量的命令。

要支持内核调试,WinDbg需要两台机器(主控机 目标机)。内核调试只被基于NT内核的Windows系统支持。

WinDbg同样支持各种用户模式和内核模式目标的远程调试选项。

WinDbg可以看作图形界面的CDB / NTSD 或者 KD

posted on 2008-05-04 15:23 NetRoc 阅读(1833) 评论(1)  编辑 收藏 引用 所属分类: WinDbg文档翻译

只有注册用户登录后才能发表评论。

导航

统计

常用链接

留言簿(7)

随笔档案(99)

文章分类(35)

文章档案(32)

Friends

Mirror

搜索

最新评论

阅读排行榜

评论排行榜