使用 KD 进行实时内核模式调试
在命令提示符窗口中,启动 KD 时,可以启动实时内核模式调试会话。 输入以下命令之一。
kd [-y SymbolPath] -k net:port=PortNumber,key=Key[,target=TargetIPAddress|TargetHostName]
kd [-y SymbolPath] -k usb:targetname=USBString
kd [-y SymbolPath] -k com:port=ComPort,baud=BaudRate
kd [-y SymbolPath] -k com:ipport=SerialTcpIpPort,port=SerialIPAddress
kd [-y SymbolPath] -k com:pipe,port=\\VMHost\pipe\PipeName[,resets=0][,reconnect]
kd [-y SymbolPath] -k com:调制解调器
kd [-y SymbolPath] -kl
kd [-y SymbolPath] -k
有关详细信息,请参阅 KD 命令行选项。
环境变量
若要通过串行(COM 端口)连接进行调试,可以使用环境变量来指定连接设置。
使用以下变量指定串行连接。
set _NT_DEBUG_PORT = ComPort
set _NT_DEBUG_BAUD_RATE = BaudRate
有关详细信息,请参阅 内核模式环境变量。
参数
SymbolPath
符号文件所在的目录列表。 列表中的目录用分号分隔。 有关详细信息,请参阅 符号路径。
PortNumber
用于网络调试的端口号。 可以选择从 49152 到 65535 的任意数字。 有关详细信息,请参阅 手动设置网络连接。
钥匙
用于网络调试的加密密钥。 建议使用自动生成的密钥,该密钥由 bcdedit 在配置目标计算机时提供。 有关详细信息,请参阅 手动设置网络连接。
TargetIPAddress
目标计算机的 IPv4 地址。
指定 target= IP 地址时,这会导致调试器通过向目标发送特殊数据包来启动与指定目标计算机的连接,从而导致它尝试与该调试器连接。 调试器会每隔半秒重复向目标发送数据包,尝试连接。 如果连接成功,目标将删除任何现有连接,并仅与此调试器实例通信。 这样,就可以从现有调试连接中控制调试会话。
当目标配置有主机 IP 地址,并且调试器在具有配置的主机 IP 地址的计算机上运行时,无需指定 target= IP 地址参数。 当目标配置有主机 IP 地址时,它将每隔三秒将 OFFER 数据包发送到主机。 如果未指定 target= IP 地址,则 OFFER 数据包允许调试器连接到主机。
有关在目标上配置主机 IP 地址的详细信息,请参阅 “自动 设置 KDNET 网络内核调试”和 “手动设置 KDNET 网络内核调试”。
TargetMachineName
目标电脑的计算机名称。 若要使用计算机名称,网络上的 DNS 系统必须具有与目标电脑的 IP 地址关联的计算机名称。
USBString
USB 连接字符串。 这必须与使用 /targetname 启动选项指定的字符串匹配。 有关详细信息,请参阅设置 USB 3.0 xHCI-DBC 内核模式调试(KDUSB)。
ComPort
COM 端口的名称。 这可以采用格式“com2”或格式为“\\.\com2”,但不应只是数字。 有关详细信息,请参阅 手动设置串行连接。
BaudRate
波特率。 可以是 9600、19200、38400、57600 或 115200。
VMHost
调试虚拟机时, VMHost 指定运行虚拟机的物理计算机的名称。 如果虚拟机与内核调试器本身在同一台计算机上运行,请对 VMHost 使用单个句点(.)。 有关详细信息,请参阅 设置与虚拟机的连接。
PipeName
虚拟机为调试连接创建的管道的名称。
resets=0
指定在主机和目标同步时,可以向目标发送不限数量的重置数据包。 仅当调试某些类型的虚拟机时,才需要此参数。
重新
使调试器在发生读/写失败时自动断开连接并重新连接管道。 此外,如果在启动调试器时找不到命名管道,则重新连接参数将导致它等待显示此名称的管道。 仅当调试某些类型的虚拟机时,才需要此参数。
-kl
使调试器执行本地内核模式调试。 有关详细信息,请参阅 本地内核模式调试。
SerialTcpIpPort
模拟串行 COM 端口的目标 TCP IP 端口。
SerialIPAddress
模拟串行 COM 端口的目标 TCP IP 地址。
示例
以下批处理文件可用于通过 COM 端口连接设置和启动调试会话。
set _NT_SYMBOL_PATH=d:\mysymbols
set _NT_DEBUG_PORT=com1
set _NT_DEBUG_BAUD_RATE=115200
set _NT_DEBUG_LOG_FILE_OPEN=d:\debuggers\logfile1.log
kd
以下命令行可用于启动 WinDbg,而无需任何环境变量。
kd -y d:\mysymbols -k com:port=com2,baud=57600
kd -y d:\mysymbols -k com:port=\.\com2,baud=115200
kd -y d:\mysymbols -k net:port=50000,key=AutoGeneratedKey