KD 命令行选项

KD 的首次用户应从 使用 KD 和 NTKD 调试 部分开始。

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{a|au|o|ou} LogFile] 
   [-aExtension] [-zp PageFile] 
   [-i ImagePath] [-y SymbolPath]  [-srcpath SourcePath] 
   [-k ConnectType | -kl | -kqm | -kx ExdiOptions] [-ee {masm|c++}] 
   [-z DumpFile] [-cf "filename"] [-cfr "filename"] [-c "command"] 
   [-t PrintErrorLevel] [-version] 

kd -iu KeyString

kd -QR Server 

kd -wake PID 

kd -?

接下来介绍 KD 命令行选项。 只有 -remote-server 选项区分大小写。 初始连字符可以替换为正斜杠 (/) 。 不采用任何其他参数的选项可以串联 ,因此 kd -r -n -v 可以编写为 kd -rnv

如果使用 -remote-server 选项,则它必须显示在命令行上的任何其他选项之前。

参数

-serverServerTransport
创建可由其他调试器访问的调试服务器。 有关可能的 ServerTransport 的说明,请参阅 激活调试服务器。 使用此参数时,它必须是命令行上的第一个参数。

-remoteClientTransport
创建调试客户端,并连接到已在运行的调试服务器。 有关可能的 ClientTransport 值的说明,请参阅 激活调试客户端。 使用此参数时,它必须是命令行上的第一个参数。

-a扩展
设置默认扩展 DLL。 默认值为 kdextx86.dll 或 kdexts.dll。 “a”后不能有空格,并且不能包含 .dll 文件扩展名。 有关详细信息以及设置此默认值的其他方法,请参阅 加载调试器扩展 DLL

-B
不再支持此选项。

-bonc
如果指定了此选项,则调试器将在会话开始后立即进入目标。 当连接到当前可能未中断到目标的调试服务器时,这尤其有用。

-c “command
指定要在启动时运行的初始调试器命令。 此命令必须用引号括起来。 可以使用分号分隔多个命令。 (如果命令列表很长,则将它们放在脚本中,然后将 -c 选项与 $<、$、$><><、$>< (运行脚本文件) 命令可能更容易。)

如果要启动调试客户端,此命令必须适用于调试服务器。 不允许使用客户端特定的命令,例如 .lsrcpath

-cf “filename
指定脚本文件的路径和名称。 启动调试器后立即执行此脚本文件。 如果 filename 包含空格,则必须用引号将其括起来。 如果省略路径,则假定为当前目录。 如果未使用 -cf 选项,则当前目录中 ntsd.ini 的文件将用作脚本文件。 如果文件不存在,则不会发生错误。 有关详细信息,请参阅 使用脚本文件

-cfr “filename
指定脚本文件的路径和名称。 启动调试器后,只要重新启动目标,就会立即执行此脚本文件。 如果 filename 包含空格,则必须用引号将其括起来。 如果省略路径,则假定为当前目录。 如果文件不存在,则不会发生错误。 有关详细信息,请参阅 使用脚本文件

-clines
设置命令历史记录中可在远程调试期间访问的大致命令数。 有关详细信息,以及更改此数字的其他方法,请参阅 使用调试器命令

-d
重新启动后,一旦加载内核模块,调试器就会进入目标计算机。 (此中断早于 -b 选项的中断。) 有关更改此状态的详细信息和其他方法,请参阅 崩溃和重新启动目标计算机

-ee {masm|c++}
设置默认表达式计算器。 如果指定 了 masm ,则将使用 MASM 表达式语法。 如果指定 了 c++ ,则将使用 C++ 表达式语法。 如果省略 -ee 选项,则使用 MASM 表达式语法作为默认值。 有关详细信息 ,请参阅计算表达式

-failinc
使调试器忽略任何可疑的符号。 调试用户模式或内核模式微型转储文件时,此选项还将阻止调试器加载无法映射映像的任何模块。 有关详细信息以及控制此内容的其他方法,请参阅 SYMOPT_EXACT_SYMBOLS

-iImagePath
指定生成错误的可执行文件的位置。 如果路径包含空格,则应将其括在引号中。

-iuKeyString
将调试器远程处理注册为 URL 类型,以便用户可以使用 URL 自动启动调试器远程客户端。 KeyString 的格式为 remdbgeng://RemotingOptionRemotingOption 是一个字符串,用于定义 在激活调试客户端主题中定义的传输协议。 如果此操作成功,则不显示任何消息;如果失败,则显示错误消息。

-iu 参数不得与任何其他参数一起使用。 此命令实际上不会启动 KD。

-kConnectType
告知调试器如何连接到目标。 有关详细信息,请参阅 使用 KD 和 NTKD 进行调试

-Kl
在调试器所在的计算机上启动内核调试会话。

-kqm
在安静模式下启动 KD。

-kxExdiOptions
使用 EXDI 驱动程序启动内核调试会话。 本文档中未介绍 EXDI 驱动程序。 如果你有硬件探测或硬件模拟器的 EXDI 接口,请联系 Microsoft 获取调试信息。

-线
启用源行调试。 如果省略此选项,则必须使用 .lines (切换源行支持) 命令,然后才能允许进行源调试。 有关控制此情况的其他方法,请参阅 SYMOPT_LOAD_LINES

-log{a|au|o|ou} LogFile
开始将信息记录到日志文件。 如果 LogFile 已存在,则如果使用 -logo ,则会覆盖该文件;如果使用 -loga ,则会将输出追加到文件中。 -logau-logou 选项的运行方式分别类似于 -loga-logo,只不过日志文件是 Unicode 文件。 有关详细信息,请参阅 在 KD 中保留日志文件

-m
指示串行端口已连接到调制解调器。 指示调试器为载波检测信号watch。

-myob
如果 dbghelp.dll 的版本不匹配,调试器将继续运行。 (如果没有 -myob 开关,则被视为致命错误。)

此选项的次要效果是禁止在进入目标计算机时通常显示的警告。

-n
干扰符号加载:启用符号处理程序的详细输出。 有关控制此内容的详细信息和其他方法,请参阅 SYMOPT_DEBUG

-noio
防止调试服务器用于输入或输出。 将仅接受来自调试客户端 (以及 -c 命令行选项) 指定的任何初始命令或命令脚本的输入。

所有输出都将定向到调试客户端。 有关详细信息,请参阅 激活调试服务器

-noshell
禁止所有 .shell 命令。 只要调试器正在运行,此禁止就会持续,即使新的调试会话开始也是如此。 有关详细信息以及禁用 shell 命令的其他方法,请参阅 使用 Shell 命令

-QR服务器
列出在指定网络服务器上运行的所有调试服务器。 前一个 Server) \\ 双反斜杠 (是可选的。 有关详细信息 ,请参阅搜索调试服务器

-QR 参数不得与任何其他参数一起使用。 此命令实际上不会启动 KD。

-R
显示寄存器。

-s
禁用延迟符号加载。 这会减慢进程启动速度。 有关控制此内容的详细信息和其他方法,请参阅 SYMOPT_DEFERRED_LOADS

-sdce
导致调试器在符号加载期间显示 “文件访问错误 ”对话框。 有关控制此内容的详细信息和其他方法,请参阅 SYMOPT_FAIL_CRITICAL_ERRORS

-安全
激活 安全模式

-ses
使调试器对所有符号文件执行严格的评估,并忽略任何可疑的符号。 有关详细信息以及控制此内容的其他方法,请参阅 SYMOPT_EXACT_SYMBOLS

-sflags 0xNumber
同时设置所有符号处理程序选项。 Number 应是前缀为 0x 的十六进制数 -- 允许使用不带 0x 的小数,但符号选项是二进制标志,因此建议使用十六进制。 应谨慎使用此选项,因为它将覆盖所有符号处理程序默认值。 有关详细信息,请参阅 设置符号选项

-sicv
使符号处理程序忽略 CV 记录。 有关详细信息以及控制此内容的其他方法,请参阅 SYMOPT_IGNORE_CVREC

-罪
使调试器忽略符号路径和可执行映像路径环境变量。 有关详细信息,请参阅 SYMOPT_IGNORE_NT_SYMPATH

-Snc
导致调试器关闭 C++ 转换。 有关控制此内容的详细信息和其他方法,请参阅 SYMOPT_NO_CPP

-snul
禁用非限定名称的自动符号加载。 有关控制此内容的详细信息和其他方法,请参阅 SYMOPT_NO_UNQUALIFIED_LOADS

-srcpathSourcePath
指定源文件搜索路径。 使用分号 (分隔多个路径 ;) 。 如果路径包含空格,则应将其括在引号中。 有关详细信息,以及更改此路径的其他方法,请参阅 源路径

-支持
使符号处理程序在每次符号搜索期间搜索公共符号表。 有关控制此内容的详细信息和其他方法,请参阅 SYMOPT_AUTO_PUBLICS

-tPrintErrorLevel
指定将导致调试器显示错误消息的错误级别。 这是一个十进制数,等于 0、1、2 或 3。 下面描述了这些值:

“值” 返回的常量 含义

0

不显示任何错误。

1

ERROR

显示错误级别调试事件。

2

MINORERROR

显示 MINORERROR 和 ERROR 级别的调试事件。

3

WARNING

显示 WARNING、MINORERROR 和 ERROR 级别的调试事件。

此错误级别仅在已检查的 Microsoft Windows 版本中有意义。 默认值为 1。 Windows 10 版本 1803 之前的旧版 Windows 上提供已检查的版本。

-V
为加载、延迟加载和卸载生成详细消息。

-版本
打印调试器版本字符串。

-唤醒PID
使进程 ID 由 PID 指定的用户模式调试器结束睡眠模式。 在睡眠模式下,必须在目标计算机上发出此命令。 有关详细信息 ,请参阅从内核调试器控制 User-Mode 调试器

-wake 参数不得与任何其他参数一起使用。 此命令实际上不会启动 KD。

-X
导致调试器在异常首次发生时中断,而不是让导致异常的应用程序或模块处理它。 (与 -b 相同,但初始 eb nt 除外!NtGlobalFlag 9;g command.)

-ySymbolPath
指定符号搜索路径。 使用分号 (分隔多个路径 ;) 。 如果路径包含空格,则应用引号引起来。 有关详细信息以及更改此路径的其他方法,请参阅 符号路径

-zDumpFile
指定要调试的故障转储文件的名称。 如果路径和文件名包含空格,则必须用引号括起来。 通过包含多个 -z 选项,每个选项后跟不同的 DumpFile 值,可以同时打开多个转储文件。 有关详细信息,请参阅 使用 KD 分析 Kernel-Mode 转储文件

-zpPageFile
指定已修改的页面文件的名称。 如果要调试转储文件,并且想要使用 .pagein (Page In Memory) 命令,这将非常有用。 不能将 -zp 与标准 Windows 页面文件一起使用,只能使用经过特殊修改的页面文件。

-?
显示命令行帮助文本。

KD 将自动检测运行目标的平台。 无需在 KD 命令行上指定目标。 使用名称 I386KDIA64KD) 的旧语法 (已过时。