Debugging Tools for Windows

KD命令行选项

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

KD命令行使用如下语法。

kd -server ServerTransport | -remote ClientTransport ] 
   [-| -x] [-d] [-bonc] [-m] [-myob] [-lines] [-n] [-r] [-s
   [-v] [-clines lines] [-failinc] [-noio] [-noshell
   [-secure] [-sdce] [-ses] [-sicv] [-sins] [-snc] [-snul]
   [-sup] [-sflags 0xNumber] [-log{o|aLogFile
   [-aExtension] [-zp PageFile
   [-i ImagePath] [-y SymbolPath]  [-srcpath SourcePath
   [-k ConnectType | -kl | -kx ExdiOptions] [-ee {masm|c++}] 
   [-z DumpFile] [-cf "filename"] [-cfr "filename"] [-c "command"

kd -iu

kd -QR Server 

kd -wake PID 

kd -?

下面是KD命令行选项的说明。仅有-remoteserver选项是区分大小写的。前面的连字号也可以用斜杠(/)代替。不带任何参数的选项可以连载一起 — 所以kd -r -n -v可以写成kd -rnv

如果使用了-remote-server选项,它们必须出现在命令行中其他任何选项之前。

参数

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

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

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

-bonc
如果指定了该选项,调试器会在会话开始之后尽快中断目标。这在连接到可能不能正确中断到目标的调试服务器时特别有用。
-c "command"
指定启动时运行的初始调试器命令。该命令必须用引号括起来。多条命令可以使用分号来分隔。(如果命令列表很长,将它们写入一个脚本文件并使用-c选项和$<, $><, $><, $$>< (Run Script File)命令可能会方便一些。)

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

-cf "filename"
指定脚本文件的路径和名字。该脚本在调试器启动后会尽快被执行。如果filename 包含空格,则必须用引号括起来。如果省略掉路径,则使用默认路径。如果未使用-cf选项,当前目录下的 ntsd.ini会被作为该脚本文件。如果文件不存在也不会发生错误。详细信息,查看使用脚本文件
-cfr "filename"
指定脚本文件的路径和名字。该脚本在调试器启动后和每次调试目标被重起时会被执行。如果filename 包含空格,则必须用引号括起来。如果省略掉路径,则使用默认路径。如果文件不存在也不会发生错误。详细信息,查看使用使用脚本文件
-clines lines
设置进行远程调试时可访问的历史命令的近似行数。详细信息和改变该数字的其他方法,查看使用调试器命令
-d
重起之后,在完成内核模块加载时调试器就中断目标机。(该断点比-b选项的断点更早。)查看崩溃和重起目标机获取详细信息和改变该状态的其他方法。
-ee {masm|c++}
设置默认的表达式求值器。如果指定masm,则使用MASM表达式语法。如果指定C++,则使用C++语法。如果省略-ee选项,默认使用MASM表达式语法。查看表达式求值获取详细信息。
-failinc
指示调试器忽略任何可疑的符号。调试用户模式或内核模式minidump文件时,该选项也可以避免调试器加载任何映像不能被映射的模块的符号。详细信息和控制该选项的其他方法,查看SYMOPT_EXACT_SYMBOLS
-i ImagePath
指定产生错误的可执行文件的位置。如果该路径包含空格,需要用引号括起来。详细信息和改变该路径的其他方法,查看可执行映像路径
-k ConnectType
告诉调试器如何连接到目标机。详细信息,查看选择内核调试设置
-kl
(Windows XP和之后的系统) 在和调试器同一台机器上启动一个内核调试会话。详细信息,查看附加到目标机(内核模式)
-kx ExdiOptions
使用EXDI 驱动来启动一个内核调试会话。EXDI驱动在本文档中没有描述。如果拥有硬件探测器或硬件仿真器的EXDI接口,请联系Microsoft获得调试信息。
-lines
启用源码调试。如果忽略该选项,在进行源码调试之前必须执行.lines (Toggle Source Line Support)命令。控制该选项的其他方式,查看SYMOPT_LOAD_LINES
-log{o|a} LogFile
将日志记录到日志文件中。如果LogFile 已存在,使用-logo 时会被覆盖,使用-loga 时会将新内容添加到后面。更多信息,查看使用日志文件
-m
指定连接到modem的串口。指示调试器监控载波检测信号(carrier-detect signal)。
-myob
如果和dbghelp.dll 版本不匹配,调试器仍然继续运行。(没有-myob开关时,这会产生一个致命错误。)

该选项的第二个作用是,通常在中断目标机时会显示出来的警告信息不再显示。

-n
细符号加载:启用符号处理器的详细输出。关于控制该选项的其他方法,查看SYMOPT_DEBUG
-noio
阻止调试服务器被用于输入输出。只允许来自调试客户端的输入(加上任何用-c 命令行选项指定的初始命令或命令脚本)。所有输出都会被重定向到调试客户端。 如果使用NTSD作为服务器,不会创建任何控制台窗口。详细信息,查看激活调试服务器
-noshell
禁止任何.shell 命令。这种阻止只要调试器还在运行就会持续,即使开始了新的调试会话。详细信息和禁用.shell 命令的其它方法,查看使用Shell命令
-QR Server
列出指定网络服务器上运行的所有调试服务器。双反斜杠(\\)是可选的。查看搜索调试服务器获取详细信息。

-QR 参数不能和其他参数一起使用。该命令并不实际启动KD。

-r
显示寄存器。
-s
禁止延迟符号加载。这会造成进程启动变慢。详细信息和控制该选项的其他方式,查看SYMOPT_DEFERRED_LOADS
-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
-v
显示加载、延迟加载和卸载的详细信息。
-wake PID
使得进程ID由PID指定的用户模式调试器结束睡眠模式。该命令必须在睡眠模式时在目标机上执行。查看从内核调试器控制用户模式调试器获取详细信息。

-wake参数不能和其他参数一起使用。该命令不会实际启动KD。

-x
使得调试器在异常第一次触发时中断,而不是让应用程序或模块来处理异常(除了初始的eb nt!NtGlobalFlag 9;g 命令之外,和-b一样)。
-y SymbolPath
指定符号搜索路径。使用分号(;)分隔多个路径。如果该路径包含空格,应该使用引号括起来。详细信息和其他修改这个路径的方法,查看符号路径
-z DumpFile
指定要调试的崩溃转储文件名。如果路径和名字包含空格,必须使用引号括起来。可以通过包含多个-z选项,每个后跟不同的DumpFile值来一次打开几个dump文件。详细信息,查看使用KD分析内核模式Dump文件
-zp PageFile
指定被修改过的页面文件的名字。这在调试dump文件并想使用.pagein (Page In Memory)命令时很有用。-zp 不能使用标准的Windows页面文件 — 只有特殊修改过的页面文件可以使用。
-?
显示命令行帮助文本。

KD会自动检测目标机运行的平台。在KD命令行不需要指定目标的平台。旧的语法(使用名字I386KDIA64KD)已被废除。

Build machine: CAPEBUILD