使用 KD 进行实时内核模式调试
在命令提示符窗口中,可以在启动 KD 时启动实时内核模式调试会话。 输入以下命令之一。
kd [-y SymbolPath] -k net:port=PortNumber,key=Key[,target=TargetIPAddress|TargetHostName]
kd [-y SymbolPath] -k 1394:channel=1394Channel[,symlink=1394Protocol]
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:modem
kd [-y SymbolPath] -kl
kd [-y SymbolPath] -k
有关详细信息,请参阅 KD Command-Line选项。
环境变量
若要通过串行 (COM 端口) 或 1394 连接进行调试,可以使用环境变量来指定连接设置。
使用以下变量指定串行连接。
set _NT_DEBUG_PORT = ComPort
set _NT_DEBUG_BAUD_RATE = BaudRate
使用以下变量指定 1394 连接。
set _NT_DEBUG_BUS = 1394
set _NT_DEBUG_1394_CHANNEL = 1394Channel
set _NT_DEBUG_1394_SYMLINK = 1394Protocol
有关详细信息,请参阅 内核模式环境变量。
参数
SymbolPath
符号文件所在的目录列表。 列表中的目录用分号分隔。 有关详细信息,请参阅 符号路径。
PortNumber
用于网络调试的端口号。 可以选择 49152 到 65535 的任意数字。 有关详细信息,请参阅 手动设置网络连接。
关键
用于网络调试的加密密钥。 建议使用自动生成的密钥,该密钥在配置目标计算机时由 bcdedit 提供。 有关详细信息,请参阅 手动设置网络连接。
TargetIPAddress
目标计算机的 IPv4 地址。
指定 target= IP 地址时,这会导致调试器通过向目标发送特殊数据包来启动与指定目标计算机的连接,这将导致调试器尝试与该调试器连接。 调试器将大约每半秒重复向目标发送数据包,尝试连接。 如果连接成功,目标将删除任何现有连接,并仅与此调试器实例通信。 这使你可以从现有调试连接中控制调试会话。
如果为目标配置了主机 IP 地址,并且调试器正在使用配置的主机 IP 地址在计算机上运行,则无需指定 target= IP 地址参数。 当目标配置有主机 IP 地址时,它将每三秒向主机发送一次 OFFER 数据包。 当未指定 target= IP 地址时,OFFER 数据包允许调试器连接到主机。
有关在目标上配置主机 IP 地址的详细信息,请参阅 自动设置 KDNET 网络内核调试 和 手动设置 KDNET 网络内核调试。
TargetMachineName
目标电脑的计算机名称。 若要使用计算机名称,网络上的 DNS 系统必须具有与目标电脑的 IP 地址关联的计算机名称。
1394通道
1394 通道编号。 有效通道号是介于 0 和 62 之间的任意整数(包括 0 和 62)。 1394Channel 必须与目标计算机使用的数字匹配,但不依赖于在适配器上选择的物理端口 1394。 有关详细信息,请参阅 手动设置 1394 连接。
1394协议
要用于 1394 内核连接的连接协议。 这几乎始终可以省略,因为调试器将自动选择正确的协议。 如果要手动设置此设置,并且目标计算机正在运行 Windows XP,则应将 1394Protocol 设置为等于“channel”。 如果目标计算机运行的是 Windows Server 2003 或更高版本,则应将 1394Protocol 设置为等于“实例”。 如果省略它,调试器将默认为适用于当前目标计算机的协议。 这只能通过命令行或环境变量指定,而不能通过 WinDbg 图形界面进行指定。
USBString
USB 连接字符串。 这必须与使用 /targetname 启动选项指定的字符串匹配。 有关详细信息,请参阅 手动设置 USB 3.0 连接 和 手动设置 USB 2.0 连接。
ComPort
COM 端口的名称。 这可以是格式“com2”或格式“\\.\com2”,但不应只是数字。 有关详细信息,请参阅 手动设置串行连接。
BaudRate
波特率。 这可以是 9600、19200、38400、57600 或 115200。
VMHost
调试虚拟机时, VMHost 指定运行虚拟机的物理计算机的名称。 如果虚拟机与内核调试器本身在同一台计算机上运行,请对 VMHost 使用单个周期 (.) 。 有关详细信息,请参阅 设置与虚拟机的连接。
PipeName
虚拟机为调试连接创建的管道的名称。
resets=0
指定当主机和目标同步时,可以向目标发送无限数量的重置数据包。 仅当调试某些类型的虚拟机时,才需要此参数。
重新
导致调试器在发生读/写失败时自动断开连接并重新连接管道。 此外,如果在启动调试器时找不到命名管道,则重新连接参数将导致它等待此名称的管道出现。 仅当调试某些类型的虚拟机时,才需要此参数。
-Kl
使调试器执行本地内核模式调试。 有关详细信息,请参阅 本地Kernel-Mode调试。
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
以下批处理文件可用于通过 1394 连接设置和启动调试会话。
set _NT_SYMBOL_PATH=d:\mysymbols
set _NT_DEBUG_BUS=1394
set _NT_DEBUG_1394_CHANNEL=44
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 1394:channel=20,symlink=instance
kd -y d:\mysymbols -k net:port=50000,key=AutoGeneratedKey
反馈
https://aka.ms/ContentUserFeedback。
即将发布:在整个 2024 年,我们将逐步淘汰作为内容反馈机制的“GitHub 问题”,并将其取代为新的反馈系统。 有关详细信息,请参阅:提交和查看相关反馈