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://RemotingOption
。 RemotingOption 是一个字符串,用于定义激活调试客户端主题中定义的传输协议。 如果此操作成功,则不显示任何消息;如果失败,将显示一条错误消息。
-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 命令行上指定目标。 旧语法(使用名称 I386KD 或 IA64KD)已过时。