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 选项,则该选项必须出现在命令行上的任何其他选项之前。

参数

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

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

-一个 外延
设置默认扩展 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

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

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

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

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

-kl
在调试器所在的同一台计算机上启动内核调试会话。

-kqm
以安静模式启动 KD。

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

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

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

-m
指示串行端口已连接到调制解调器。 指示调试器监视运营商检测信号。

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

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

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

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

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

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

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

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

-r
显示寄存器。

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

-sdce
使调试器在符号加载期间显示文件访问错误对话框。 有关详细信息以及其他控制方法,请参阅 SYMOPT_FAIL_CRITICAL_ERRORS

-安全
激活安全模式

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

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

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

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

-snc
使调试器关闭 C++ 转换。 有关详细信息和其他控制方法,请参阅 SYMOPT_NO_CPP

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

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

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

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

返回的常量 含义

0

NONE

不显示任何错误。

1

ERROR

显示 ERROR 级别调试事件。

2

MINORERROR

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

3

WARNING

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

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

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

-版本
输出调试器版本字符串。

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

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

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

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

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

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

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

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