Debugging Tools for Windows

WinDbg命令行选项

首次使用WinDbg的用户应该从调试器操作节开始阅读。

WinDbg命令行使用如下语法:

windbg -server ServerTransport | -remote ClientTransport ] [-lsrcpath ]
   [ -premote SmartClientTransport ] [-?] [-ee {masm|c++}] 
   [-clines lines] [-b] [-d] [-aExtension] [-e Event
   [-failinc] [-g] [-G] [-hd] [-j] [-n] [-noshell] [-o
   [-Q | -QY] [-QS | -QSY] [-robp] [-secure] [-ses] [-sdce
   [-sicv] [-sins] [-snc] [-snul] [-sup] [-sflags 0xNumber
   [-T Title] [-v] [-log{o|aLogFile] [-noinh
   [-i ImagePath] [-y SymbolPath] [-srcpath SourcePath
   [-k [ConnectType] | -kl | -kx ExdiOptions] [-c "command"
   [-pb] [-pd] [-pe] [-pr] [-pt Seconds] [-pv]
   [-W Workspace] [-WF Filename] [-WX] [-zp PageFile
   [ -p PID | -pn Name | -psn ServiceName | -z DumpFile | executable ] 

windbg -I[S

windbg -IU 

windbg -IA[S]

WinDbg命令行的描述在下面内容中。除了-j 之外所有命令行参数都是大小写敏感的。前面的连字号可以用斜杠(/)代替。

如果使用了-remote-server选项,它们必须出现在命令行中其他任何选项之前。如果指定了executable,它必须位于命令行的末尾,任何在executable 名字之后的文本都被当作可执行程序自己的命令行参数传递给它。

参数

-server ServerTransport
创建一个可以用其他调试器访问的调试服务器。关于可能的ServerTransport 值的说明,查看激活调试服务器。必须作为命令行中第一个选项使用。
-remote ClientTransport
创建一个调试客户端,并连接到已经运行的调试服务器上。关于ClientTransport 可能的值的说明,查看激活调试客户端。必须作为命令行中第一个选项使用。
-premote SmartClientTransport
创建一个灵巧客户端,并且连接到已运行的进程服务器上。关于SmartClientTransport 的可能值的说明,查看激活灵巧客户端
-aExtension
设置默认的扩展DLL。默认值为kdextx86.dllkdexts.dll。在"a"之后不能加入空格,并且不能包含.dll 扩展名。详细信息和设置该选项的其他方法,查看加载调试器扩展DLL
-b
(仅内核模式) 该选项有两个作用:

1. 调试器在连接到目标机时立即中断它。

2. 重起之后,一旦内核初始化完成,调试器就中断目标机。查看崩溃和重起目标机获取详细信息和改变该状态的其他方法。

-c "command"
指定启动时运行的初始调试器命令。该命令必须用引号括起来。多条命令可以使用分号来分隔。(如果命令列表很长,将它们写入一个脚本文件并使用-c选项和$<, $><, $><, $$>< (Run Script File)命令可能会方便一些。)

如果正在启动调试客户端,该命令必须由调试服务器使用。客户端指定的类似.lsrcpath 这样的命令是不能使用的。

-clines lines
设置进行远程调试时可访问的历史命令的近似行数。详细信息和改变该数字的其他方法,查看使用调试器命令
-d
(仅内核模式) 重起之后,在完成内核模块加载时调试器就中断目标机。(该断点比-b 选项的断点更早。)查看崩溃和重起目标机获取详细信息和改变该状态的其他方法。
-e Event
通知调试器指定的事件发生。该选项仅在编程启动调试器时使用。
-ee {masm|c++}
设置默认的表达式求值器。如果指定masm,则使用MASM表达式语法。如果指定C++,则使用C++语法。如果省略-ee选项,默认使用MASM表达式语法。查看表达式求值获取详细信息。
-failinc
指示调试器忽略任何可疑的符号。调试用户模式或内核模式minidump文件时,该选项也可以避免调试器加载任何映像不能被映射的模块的符号。详细信息和控制该选项的其他方法,查看SYMOPT_EXACT_SYMBOLS
-g
(仅用户模式) 忽略目标应用程序中的初始断点。该选项使得目标程序在启动后或者WinDbg附加之后继续运行,除非设置了其他断点。查看初始断点获取详细信息。
-G
(仅用户模式) 忽略进程终止时的最终断点。一般情况下,在映像结束过程中调试会话会结束。该选项使得调试会话在目标终止时直接退出。
-hd
(Windows XP和之后的系统,仅用户模式) 指定使用调试堆。查看创建的进程的行为获取详细信息。
-I[S]
将WinDbg安装为即时调试器。详细信息查看启用即时调试。操作完成后,会显示成功或失败的信息。如果指定了S ,成功不会有任何信息,只有失败会显示信息。

-I 参数不能和其他参数一起使用。该命令不会实际启动WinDbg,虽然WinDbg会出现一段时间。

-IA[S]
在注册表中将WinDbg和.dmp.mdmp.wew扩展名关联起来。操作完成后,会显示成功或失败的信息。如果指定了S ,成功不会有任何信息,只有失败会显示信息。进行这种关联后,双击带有这些扩展名的文件会启动WinDbg。

-IA 参数不能和其他参数一起使用。该命令不会实际启动WinDbg,虽然WinDbg会出现一段时间。

-i ImagePath
指定产生错误的可执行文件的位置。如果该路径包含空格,需要用引号括起来。详细信息和改变该路径的其他方法,查看可执行映像路径
-j
允许日志。
-k [ConnectType]
(仅内核模式) 开始一个内核调试会话。详细信息查看选择内核调试设置。如果-k没有和后面的ConnectType一起使用,则必须是命令行的最后一个部分。
-kl
(Windows XP和之后的系统,仅内核模式) 在调试器同一台机器上启动一个内核调试会话。详细信息查看附加到目标机(内核模式)
-kx ExdiOptions
(仅内核模式) 使用EXDI 驱动来启动一个内核调试会话。EXDI驱动在本文档中没有描述。如果拥有硬件探测器或硬件仿真器的EXDI接口,请联系Microsoft获得调试信息。
-log{o|a} LogFile
将日志记录到日志文件中。如果指定文件已存在,使用-logo 时会被覆盖,使用-loga 时会将新内容添加到后面。更多信息,查看使用日志文件
-lsrcpath
为远程客户端设置本地源码路径。使用该选项时命令行中必须有-remote
-n
详细符号加载:启用符号处理器的详细输出。关于控制该选项的其他方法,查看SYMOPT_DEBUG
-noinh
(仅用户模式) 阻止调试器创建的进程继承调试器的句柄。关于控制该选项的其他方法,查看创建新进程(用户模式)
-noprio
阻止任何权限的改变。该选项激活时会阻止WinDbg获得CPU时间的优先权。
-noshell
禁止任何.shell 命令。这种阻止只要调试器还在运行就会持续,即使开始了新的调试会话。详细信息和禁用.shell 命令的其它方法,查看使用Shell命令
-o
(仅用户模式) 调试所有由目标进程创建的进程(子进程)。默认情况下,调试的目标进程创建的子进程是正常运行的。控制该选项的其他方法,查看创建新进程(用户模式)
-p PID
指定要调试进程的十进制进程ID。这用于调试已运行的进程。详细信息,查看附加到运行中的进程(用户模式)
-pb
(Windows XP和之后的系统,仅用户模式) 在附加到目标进程时,阻止调试器要求初始断点。这在程序已经挂起或者不想在目标中创建中断线程(break-in thread)时有用。查看附加到运行中的进程(用户模式)
-pd
(Windows XP和之后的系统,仅用户模式) 指定在结束调试会话时目标程序不会被终止。查看结束调试会话获取详细信息。
-pe
(Windows XP和之后的系统,仅用户模式) 指示目标程序已经在被调试了。查看重新附加到目标程序获取详细信息。
-pn Name
指定被调试进程的名字。(该名字必须是唯一的。)这用来调试一个已经在运行的进程。详细信息,查看附加到运行中的进程(用户模式)
-pr
(Windows XP和之后的系统,仅用户模式) 是的调试器在附加到目标进程时让它运行。这在程序已经被挂起并且想恢复它的执行时有用。查看附加到运行中的进程(用户模式)
-psn ServiceName
指示包含要调试的进程的服务名。这在进程已经运行的情况下使用。详细信息查看附加到运行中的进程(用户模式)
-pt Seconds
指定中断超时时间,以秒为单位。默认为30。查看控制目标获取详细信息。
-pv
(仅用户模式) 指定调试器应该以无侵入的方式附加到目标进程。详细信息,查看非侵入式调试(用户模式)
-Q
禁止"Save Workspace?"对话框。工作空间不会被自动保存。查看使用工作空间获取详细信息。
-QS
禁止"Reload Source?" 对话框。源文件不会被自动重新加载。
-QSY
禁止"Reload Source?" 对话框并自动重新加载源文件。
-QY
禁止"Save Workspace?"并自动保存工作空间。查看使用工作空间获取详细信息。
-robp
这使得WinDbg可以在只读的内存页面上设置断点。(默认情况下这种操作会失败。)
-sdce
使得调试器在加载符号时显示File access error 对话框。详细信息和控制该选项的其他方法,查看SYMOPT_FAIL_CRITICAL_ERRORS
-secure
激活安全模式
-ses
使得调试器对所有符号文件进行严格的匹配并忽略任何有问题的符号。详细信息和控制该选项的其他方法,查看SYMOPT_EXACT_SYMBOLS
-sflags 0xNumber
一次设置所有的符号处理器。Number 应该是以0x 开头的16进制数 — 不带0x 的10进制数也可以使用,但是由于符号选项是二进制标志,所以推荐使用16进制。该选项应该小心使用,因为它会覆盖所有默认的符号处理器。详细信息,查看设置符号选项
-sicv
使得符号处理器忽略CV记录。详细信息和控制该选项的其他方法,查看SYMOPT_IGNORE_CVREC
-sins
使得调试器忽略环境变量中的符号路径和可执行映像路径。详细信息查看SYMOPT_IGNORE_NT_SYMPATH
-snc
使得调试器关闭C++转换。详细信息和控制该选项的其他方法,查看SYMOPT_NO_CPP
-snul
禁止为有问题的名字自动加载符号。详细信息和控制该选项的其他方法,查看SYMOPT_NO_UNQUALIFIED_LOADS
-srcpath SourcePath
指定源文件搜索路径。用分号(;)分隔多个路径。如果路径包含空格,需要用引号括起来。详细信息和其他改变该路径的方法,查看源码路径
-sup
使得符号处理器每次搜索符号时都搜索公有符号表。详细信息和控制该选项的其他方法,查看SYMOPT_AUTO_PUBLICS
-T Title
设置WinDbg窗口标题。
-v
启用调试器的详细输出。
-W Workspace
加载名字给定的工作空间。如果名字空间名包含空格,需要用引号括起来。如果不存在这个名字的工作空间,则可以选择创建新的工作空间或放弃加载。详细信息查看使用工作空间
-WF Filename
从指定文件加载工作空间。Filename 需要包含文件名和扩展名(通常是.wew)。如果名字空间名包含空格,需要用引号括起来。如果不存在这个名字的工作空间,则可以选择创建新的工作空间或放弃加载。详细信息查看使用工作空间
-WX
禁止自动加载工作空间。详细信息查看使用工作空间
-y SymbolPath
指定符号搜索路径。使用分号(;)分隔多个路径。如果该路径包含空格,应该使用引号括起来。详细信息和其他修改这个路径的方法,查看符号路径
-z DumpFile
指定要调试的崩溃转储文件名。如果路径和名字包含空格,必须使用引号括起来。可以通过包含多个-z选项,每个后跟不同的DumpFile值来一次打开几个dump文件。详细信息,查看使用WinDbg分析用户模式Dump文件使用WinDbg分析内核模式Dump文件
-zp PageFile
指定被修改过的页面文件的名字。这在调试dump文件并想使用.pagein (Page In Memory)命令时很有用。-zp 不能使用标准的Windows页面文件 — 只有特殊修改过的页面文件可以使用。
executable
指定可执行进程的命令行。这用于创建一个新进程并调试它。它应该作为命令行的最后一项。所有在可执行文件名之后的文本都被作为参数字符串传递给可执行文件。详细信息,查看创建新进程(用户模式)
-?
弹出本HTML帮助窗口。

通过命令行运行调试器时,在目标程序名后面指定传递给它的参数。例如:

windbg myexe arg1 arg2

Build machine: CAPEBUILD