激活智能客户端(内核模式)

激活 KD 连接服务器后,可以在另一台计算机上创建智能客户端并开始调试会话。

可通过两种方法启动智能客户端:使用内核协议 kdsrv 启动 KD 或 WinDbg,或使用 WinDbg 图形界面。

您需要指定 KD 连接服务器使用的远程传输协议。 还可以指定 KD 连接服务器与目标计算机之间实际内核连接的协议,也可以使用默认值。

用于启动智能客户端的常规语法取决于使用的协议。 存在以下选项:

Debugger -k kdsrv:server=@{npipe:server=Server,pipe=PipeName[,password=Password]},trans=@{ConnectType} [Options]

Debugger -k kdsrv:server=@{tcp:server=Server,port=Socket[,password=Password][,ipversion=6]},trans=@{ConnectType} [Options]

Debugger -k kdsrv:server=@{tcp:clicon=Server,port=Socket[,password=Password][,ipversion=6]},trans=@{ConnectType} [Options]

Debugger -k kdsrv:server=@{com:port=COMPort,baud=BaudRate,channel=COMChannel[,password=Password]},trans=@{ConnectType} [Options]

Debugger -k kdsrv:server=@{spipe:proto=Protocol,{certuser=Cert|machuser=Cert},server=Server,pipe=PipeName[,password=Password]},trans=@{ConnectType} [Options]

Debugger -k kdsrv:server=@{ssl:proto=Protocol,{certuser=Cert|machuser=Cert},server=Server,port=Socket[,password=Password]},trans=@{ConnectType} [Options]

Debugger -k kdsrv:server=@{ssl:proto=Protocol,{certuser=Cert|machuser=Cert},clicon=Server,port=Socket[,password=Password]},trans=@{ConnectType} [Options]

若要使用图形界面连接到 KD 连接服务器,WinDbg 必须处于休眠模式,即必须已在未使用任何命令行参数的情况下启动,或者必须已结束上一个调试会话。 选择文件 |连接到远程存根菜单命令。 出现“连接到存根服务器”对话框时,在连接字符串文本框中输入以下字符串之一:

npipe:server=Server,pipe=PipeName[,password=Password] 

tcp:server=Server,port=Socket[,password=Password][,ipversion=6] 

tcp:clicon=Server,port=Socket[,password=Password][,ipversion=6] 

com:port=COMPort,baud=BaudRate,channel=COMChannel[,password=Password] 

spipe:proto=Protocol,{certuser=Cert|machuser=Cert},server=Server,pipe=PipeName[,password=Password] 

ssl:proto=Protocol,{certuser=Cert|machuser=Cert},server=Server,port=Socket[,password=Password] 

ssl:proto=Protocol,{certuser=Cert|machuser=Cert},clicon=Server,port=Socket[,password=Password] 

或者,可以使用“浏览”按钮找到活动 KD 连接服务器。

上述命令中的参数具有以下可能的值:

Debugger
这可以是 KD 或 WinDbg。

服务器
这是创建 KD 连接服务器的计算机的网络名称或 IP 地址。开头的两个反斜杠 (\) 在命令行是可选的,但在 WinDbg 对话框中是不允许的。

pipe=PipeName
如果使用 NPIPE 或 SPIPE 协议,PipeName 是创建 KD 连接服务器时赋予管道的名称。

如果未使用有权访问服务器计算机的帐户登录到客户端计算机,则必须提供用户名和密码。 在客户端计算机的命令提示符窗口中输入以下命令。

net use \\Server\ipc$ /user:UserName

其中 Server 是服务器计算机的名称,UserName 是有权访问服务器计算机的帐户的名称。

出现提示时,输入 UserName 的密码。

此命令成功后,可以使用 -kdsrv 或使用 WinDbg 图形界面激活智能客户端。

port=Socket
如果使用 TCP 或 SSL 协议,Socket 是创建 KD 连接服务器时使用的同一套接字端口号。

clicon
指定 KD 连接服务器将尝试通过反向连接连接到智能客户端。 当且仅当服务器使用的是 clicon 时,客户端才必须使用 clicon。 在大多数情况下,在使用反向连接时,会在 KD 连接服务器之前启动智能客户端。

port=COMPort
如果使用 COM 协议,COMPort 指定要使用的 COM 端口。 前缀“COM”是可选的 -- 例如,“com2”和“2”都可接受。

baud=BaudRate
如果使用 COM 协议,BaudRate 应与 KD 连接服务器时选择的波特率匹配。

channel=COMChannel
如果使用 COM 协议,COMChannel 应与创建KD 连接服务器时选择的通道号匹配。

proto=Protocol
如果使用 SSL 或 SPIPE 协议,Protocol 应与创建 KD 连接服务器时使用的安全协议匹配。

Cert
如果使用 SSL 或 SPIPE 协议,则应使用创建 KD 连接服务器时使用的相同 certuser=Certmachuser=Cert 参数。

password=Password
如果在创建 KD 连接服务器时使用了密码,则必须提供 Password,以便创建智能客户端。 它必须与原始密码匹配。 密码是区分大小写的。 如果提供了错误的密码,错误消息将指定“Error 0x80004005”。

ipversion=6
(仅适用于 Windows 调试工具 6.6.07 及更低版本)使用 TCP 连接到 Internet 时,强制调试器使用 IP 版本 6,而不是版本 4。 在 Windows Vista 和更高版本中,调试器会尝试自动默认为 IP 版本 6,因此不需要此选项。

trans=@{ConnectType}
告知调试器如何连接到目标。 允许以下内核连接协议:

com:port=ComPort,baud=BaudRate 
1394:channel=1394Channel[,symlink=1394Protocol] 
usb2:targetname=String 
com:pipe,port=\\VMHost\pipe\PipeName[,resets=0][,reconnect]
com:modem 

有关这些协议的信息,请参阅调试设置。 您可以省略这些协议的任何参数。例如,您可以说 trans=@{com:},调试器将默认使用运行 KdSrv 的计算机上的环境变量指定的值。

选项
可以在此处放置任何其他命令行参数。 有关完整列表,请参阅命令行选项

由于 KD 连接服务器只是充当智能客户端的网关,因此,附加 选项 将与在运行 KdSrv 的计算机上启动内核调试器使用的选项相同。 例外情况是指定路径或文件名的任何选项都将作为运行智能客户端的计算机上的路径。