cc682/NetRoc
http://netroc682.spaces.live.com/
KD命令行选项
首次使用KD的用户应该从调试器操作节开始阅读。
KD命令行使用如下语法。
kd [ -server ServerTransport | -remote ClientTransport ]
[-b | -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|a} LogFile]
[-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 -QR Server
kd -wake pid
kd -?
下面是KD命令行选项的说明。仅有-remote和server选项是区分大小写的。前面的连字号也可以用斜杠(/)代替。不带任何参数的选项可以连载一起——所以kd -r -n -v可以写成kd -rnv。
如果使用了-remote 或-server选项,它们必须出现在命令行中其他任何选项之前。
参数
-server ServerTransport
创建一个可以用其他调试器访问的调试服务器。关于可能的ServerTransport 值的说明,查看激活调试服务器。
-remote ClientTransport
创建一个调试客户端,并连接到已经运行的调试服务器上。关于ClientTransport 可能的值的说明,查看激活调试客户端。
-aExtension
设置默认的扩展DLL。默认值为userexts。在"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
将日志记录到日志文件中。如果指定文件已存在,使用-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命令行不需要指定目标的平台。旧的语法(使用名字I386KD 或IA64KD)已被废除。
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|a} LogFile] [-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 -IA[S]
WinDbg命令行的描述在下面内容中。除了-j 之外所有命令行参数都是大小写敏感的。前面的连字号可以用斜杠(/)代替。
如果使用了-remote 或-server选项,它们必须出现在命令行中其他任何选项之前。如果指定了executable,它必须位于命令行的末尾,任何在executable 名字之后的文本都被当作可执行程序自己的命令行参数传递给它。
参数
-server ServerTransport
创建一个可以用其他调试器访问的调试服务器。关于可能的ServerTransport 值的说明,查看激活调试服务器。
-remote ClientTransport
创建一个调试客户端,并连接到已经运行的调试服务器上。关于ClientTransport 可能的值的说明,查看激活调试客户端。
-premote SmartClientTransport
创建一个灵巧客户端,并且连接到已运行的进程服务器上。关于SmartClientTransport 的可能值的说明,查看激活灵巧客户端。
-aExtension
设置默认的扩展DLL。默认值为userexts。在"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。
-I 参数不能和其他参数一起使用。该命令不会实际启动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