logo资料库

WinDbg+帮助文档翻译.pdf

第1页 / 共983页
第2页 / 共983页
第3页 / 共983页
第4页 / 共983页
第5页 / 共983页
第6页 / 共983页
第7页 / 共983页
第8页 / 共983页
资料共983页,剩余部分请下载后查看
WinDbg 帮助文档翻译----1 cc682/NetRoc Windows 调试工具 作用 本版本的 Windows 调试工具文档描述了 4 种 Microsoft 调试器:WinDbg,KD,CDB,NTSD 和其他 调试工具。 WinDbg, KD, CDB, 和 NTSD 调试器 这几款调试器完全支持在基于 x86、Itanium、x64 的处理器上运行,并且可以在所有基于 NT 内核的 Windows 操作系统上运行。它们可以调试操作系统以及在操作系统上运行的应用程序、服务和驱动程序。 基于 NT 内核的操作系统包括:  Windows Vista  Windows Server 2003  Windows XP  Windows 2000  Windows NT 4.0 CDB 和 NTSD 在实质上是相同的。在这组文档中,所有提及―CDB‖的地方,同时适用于 CDB 和 NTSD, 这两个调试器的所有不同点都会单独注明。获取更多信息,查看 CDB 和 NTSD。 另外,关于 Windows 调试工具中的 NTSD,在 Windows 的 System32 目录下有 NTSD 的一个拷贝。 本文档中描述的 Windows 调试工具包中的 NTSD 可能和 Windows 中安装的 NTSD 并不是同一个版本。 32 位 和 64 位 软件包 Windows 调试工具包包含三个不同版本:用于调试 x86 和 x64 可执行文件的 32 位版本、用于调试基于 Itanium 可执行文件的 64 位版本、以及用于调试 x64 可执行文件的 64 位版本。由于调试一般会涉及到 多种应用程序或者多种操作系统,所以选择合适的调试包并不像选择其它应用程序那么容易。获取更多信 息,查看 Choosing a 32-bit or 64-bit Debugger Package. Windows 调试工具包中的其它工具 查看完整的工具列表及它们的文档,参阅 List of Tools and Documentation. 法律信息 以下省略 XX 字
WinDbg 文档翻译----2 cc682/NetRoc 工具和文档列表 Microsoft Windows 调试工具包包含了许多调试器和其它工具。它们中的部分在本文档中进行 了说明,在其它地方有对另外部分的说明。下面的列表简要说明了每个工具以及在什么地方能够 找到和它相关的说明。 调试器 Windows 调试工具包包含以下一些调试器。对它们的说明贯穿整个文档,它们将被使用各自的 名称来引用,或者被统称为―调试器‖: WinDbg (windbg.exe) 拥有图形界面的用户模式/内核模式调试器。 KD (kd.exe) 内核模式的命令行调试器。 CDB (cdb.exe) 用户模式的命令行调试器。 NTSD (ntsd.exe) 用户模式的命令行调试器。CDB 和 NTSD 实质上是一样的。在这组文档中,所有提及―CDB‖ 的地方,同时适用于 CDB 和 NTSD 。这两个调试器的所有不同点都会单独注明。 (查看 CDB 和 NTSD 获取更多信息。) 其他工具和公用组件 Windows 调试工具包还包含以下的工具和公用组件: Logger (logger.exe 和 logexts.dll) 用于记录程序的函数调用和其他操作,有一个工具和一个扩展 dll。在本文档中包含 Logger 的 说明;查看 Logger and LogViewer。 LogViewer (logviewer.exe)
用于查看 Logger 记录下来的日志的工具。本文档中包含对 LogViewer 的说明。查看 Logger and LogViewer。 ADPlus (Autodump+, adplus.vbs) 基于命令行的 Microsoft Visual Basic 脚本。可以为一个或多个进程自动创建内存转储 (memory dump)文件和包含 Debug 输出的 log 文件。ADPlus 在本文档中有描述;参见 ADPlus. DbgRpc (dbgrpc.exe) 用于查看远程过程调用(PRC)的状态信息的工具。本文档中有对 DbgRpc 的说明。查看 RPC Debugging 和 Using the DbgRpc Tool. KDbgCtrl (Kernel Debugging Control, kdbgctrl.exe) 用于控制和配置内核调试连接的工具。本文档中有对 KDbgCtrl 的说明;查看 Using KDbgCtrl. SrcSrv (srcsrv.dll) 可以在调试中用于交付源文件的源代码服务器。本文档中有对 SrcSrv 的说明;查看 Using a Source Server. SymSrv (symsrv.dll) 调试器可以用来连接到符号存储(symbol store)的调试符号服务器(symbol server)。本文档 中有对 SymSrv 的描述;查看 Using SymSrv. SymStore (symstore.exe) 用于创建符号存储(symbol store)的工具。SymSrv 在本文档中包含说明;查看 Using SymStore. AgeStore (agestore.exe) 被符号服务器或源码服务器用于清理符号信息缓存(downstream store)的工具。AgeStore 在 本文档中没有说明。可以使用 agestore /? 命令查看该工具的帮助信息。 SymProxy 用于在网络中创建单独的 HTTP 符号服务器,以供你的所有调试器指向的工具。使用它有一个 好处是可以使用单个符号路径(symbol path)指向多个符号服务器(symbol server)(包括外部 的和内部的),并且可以处理所有的认证、通过符号缓存加快访问速度。SymProxy 在本文档中 没有说明;详细的可以参考这个工具目录下的 symhttp.doc 文件。 SymChk (Microsoft Symbol Checker, symchk.exe)
用于校验符号文件或从符号存储下载符号的工具。本文档中包含对 SymChk 的说明;查看 SymChk. DumpChk (Dump File Checking Utility, dumpchk.exe) 用于校验内存转储文件的工具。DumpChk 在本文档中没有说明。使用 dumpchk /? 命令查 看该工具的帮助信息。 DbgSrv (dbgsrv.exe) 用于远程调试的进程服务器。本文档包含对 DbgSrv 的说明;查看 Process Servers (User Mode). KdSrv (kdsrv.exe) 用于远程调试的内核调试连接服务器(KD connection server)。本文档包含对 KDSrv 的说明; 查看 KD Connection Servers (Kernel Mode). DbEngPrx (dbengprx.exe) 用于远程调试的转发器(小型代理服务器)。本文档包含 DbgSrv 的说明;查看 Repeaters. 远程工具 (remote.exe) 远程调试工具,用于远程操作任何命令行程序,包括 KD、CDB 和 NTSD。本文档包含对远程 工具的说明。查看 Remote Tool 和 Remote Debugging Through Remote.exe. GFlags (全局标志编辑器, gflags.exe) 用于控制注册表键和其他设置的工具。GFlags 在本文档中有说明。查看 GFlags. 进程终止工具 (kill.exe) 用于终止一个进程的工具。进程终止工具在本文档中有说明。查看 Kill Tool. 断点工具 (breakin.exe) 用于在某个进程中制造一次用户模式中断的工具。本文档未包含 Breakin.exe 说明。使用 breakin /? 命令查看它的帮助信息。 列表工具 (文件列表实用程序, list.exe) List.exe 在本文档中没有说明,使用 list /? 命令查看它的帮助信息。 TList (任务列表查看器, tlist.exe)
用于列举所有正在运行的进程的工具。本文档中包含 TList 的说明;查看 TList。 RTList (远程任务列表查看器, rtlist.exe) 通过 DbgSrv 进程服务器查看正在运行的进程的工具。RTList 在本文档中没有说明。使用 rtlist /? 命令查看该工具的帮助信息。 UMDH (用户模式堆转储实用程序, umdh.exe) 分析堆分配的工具。UMDH 在本文档中有说明;参见 UMDH。 如果你选择自定义安装 Windows 调试工具包,并且选择了安装 SDK 和它的子项目,所有用于 购建调试器扩展的的库、头文件和示例程序都会被安装。 文档 "Debugging Tools for Windows" (debugger.chm) 这是你当前正在阅读的文档。这是 Windows 调试工具包的核心文档。 "Debug Help Library" (dbghelp.chm) 这个文档描述了 DbgHelp API 和 ImageHlp API,也说明了如何建立自己的符号服务器。当你 选择了自定义安装Windows 调试工具包并选择了SDK 和它的子项目时才会被安装。 Windows 调试工具包之外的调试工具 下面一些相关工具不是 Windows 调试工具包的一部分: Dr. Watson (drwtsn32.exe) 用于自动生成 Dump 文件并发送错误报告到微软在线崩溃分析(Microsoft Online Crash Analysis (OCA))的工具。Dr. Watson 在本文档中有部分说明;参见 Dr. Watson. Dr. Watson 的其他特性,可以参考和 drwtsn32.exe 关联的帮助文件。 Build utility (build.exe) 用于构建调试器扩展和其他程序的编译器和链接器。构建工具和它的文档可以在 Windows Driver Kit,或者早前版本的 Windows DDK 中找到。 BinPlace (binplace.exe) 用于控制产品构建中生成的符号文件的工具。BinPlace 和它的文档可以在 Windows Driver Kit, 或者早前版本的 Windows DDK 中找到。 Application Verifier (AppVerif.exe 和 !avrf)
用于测试用户模式应用程序的工具。该工具由两部分组成:AppVerif.exe 实用程序和 !avrf 扩展命令。所有和调试相关的应用程序校验器都在本文档中有说明;查看 Application Verifier。 其他和应用程序校验器特性,可以参考和 AppVerif.exe 关联的帮助文档。 WinDbg 文档翻译----3 cc682/NetRoc http://netroc682.spaces.live.com/ 调试器 本节包含以下内容: 工具包中的调试器 安装和设置 调试器操作 调试符号 崩溃转储文件 安全事项 调试器参考 工具包中的调试器 本文档描述 4 款 Microsoft 调试器的工作方式: CDB 和 NTSD KD WinDbg 查看工具包中的完整列表以及他们的文档,参见工具列表和文档。 CDN、NTSD 和 WinDbg 可以在 Microsoft Windows 95、Windows 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 CDB 和 NTSD 是可以用来调试用户模式程序的命令行工具。除了启动的方式之外,这两个工具 基本上是一样的。 本文档将使用―CDB‖来同时提及 CDB 和 NTSD。除非专门注明,否则所有提到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 系统 中。所以在 Windows 的 system32 目录下可以找到 NTSD。 如果准备使用在 system32 目录下的 NTSD,有两个重要的地方需要注意:  该版本 NTSD 不支持通过调试器的远程调试  该版本的 NTSD 可能和当前文档中描述的版本不同。 为了避免这些问题,建议只使用 Windows 调试工具包中的 NTSD 和 CDB。 用内核调试器控制 CDB 或者 NTSD CDB 和 NTSD 的输入输出能够被重定向,所以可以通过内核调试器进行控制(KD 或者 WinDbg)。 这项技术如果用在 CDB 上,CDB 的窗口将会出现,但是不能进行输入输出。如果使用在 NTSD 上,则不会有控制台窗口出现。 从内核调试器控制 NTSD 是非常有用的,因为它是一个非常轻量级的调试器,在运行目标程序 的机器上,它几乎不会增加任何额外开销。这种结合可用于调试系统进程、关机、或者系统刚刚 启动之后的情况。查看使用内核调试器控制用户态调试器 获得更详细的信息。 KD Microsoft Kernel Debugger (KD) 是一款基于字符界面的控制台程序,可以在所有 NT 内核 操作系统上对在内核模式下的活动进行深度分析。 KD 可用于调试内核模式程序和驱动程序,或者监控系统本身的行为。KD 支持多处理器的调试。 一般来说,KD 并不运行在被调试的机器上。内核模式调试一般需要两台机器(主控机 和 目标 机)。 大多数 KD 的命令不能像在 CDB, NTSD, 和 WinDbg 中一样针对特定进程或者线程。 调试不同平台的目标机 KD 可以支持调试基于 x86、Itanium 或者 x64 平台的目标机。 调试器可以自动检测目标运行的机器平台,所以不需要在 KD 的命令行中指定了。旧的名字(使 用 I386KD 或者 IA64KD 的名字)不再使用。
分享到:
收藏