激活智能客户端

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

启动智能客户端的方法有两种:使用 - premote 命令行选项启动 CDB 或 WinDbg,或者使用 WinDbg 图形界面。

智能客户端的协议必须与进程服务器的协议匹配。 启动智能客户端的一般语法取决于所使用的协议。 可设置的选项包括:

Debugger -premote npipe:server=Server,pipe=PipeName[,password=Password] [Options]

Debugger -premote tcp:server=Server,port=Socket[,password=Password][,ipversion=6] [Options]

Debugger -premote tcp:clicon=Server,port=Socket[,password=Password][,ipversion=6] [Options]

Debugger -premote com:port=COMPort,baud=BaudRate,channel=COMChannel[,password=Password] [Options]

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

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

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

若要使用图形界面连接到进程服务器,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] 

或者,可以使用"浏览 " 按钮查找活动的进程服务器。 请参阅文件|连接远程存根了解详细信息。

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

调试
这可以是 CDB 或 WinDbg。

服务器
这是创建进程服务器的计算机的网络名称或 IP 地址。 两个初始反 (\) 在命令行上是可选的,但在 WinDbg 对话框中不允许。

pipe=PipeName
如果使用 NPIPE 或 SPIPE 协议, 则 PipeName 是创建进程服务器时为管道提供的名称。

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

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

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

系统提示时,输入 UserName 的密码

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

注意 可能需要在服务器计算机上启用文件和打印机共享。 在控制面板中,导航到"网络和 Internet>"网络和共享中心>"高级共享设置"。 选择 "启用文件和打印机共享"

port=Socket
如果使用 TCP 或 SSL 协议 ,套接字 与创建进程服务器时使用的套接字端口号相同。

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

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

00=10000001
如果使用 COM 协议, 则包比特率 应匹配创建进程服务器时选择的波特率。

channel=COMChannel
如果使用 COM 协议, 则 COMChannel 应匹配创建进程服务器时选择的通道号。

proto=Protocol
如果使用 SSL 或 SPIPE 协议, 则协议 应匹配创建进程服务器时使用的安全协议。

证书
如果使用 SSL 或 SPIPE 协议,则应当使用创建进程服务器时所使用的相同 certuser=Certmachuser=Cert 参数。

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

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

选项
可在此处放置任何其他命令行参数。 有关 完整列表, 请参阅命令行选项。 如果使用 CDB,则必须指定要调试的进程。 如果使用 WinDbg,可以在命令行上或图形界面上指定进程。

由于进程服务器只是充当智能客户端的网关,因此,如果与目标应用程序在同一计算机上启动用户模式调试器,则其他选项将与使用的选项相同。

如果将 - premote 选项与 .attach (Attach to Process) .create (Create Process) 一起使用,则参数与上面列出的参数相同。

疑难解答

如果看到 此消息:客户端 使用的远程处理协议版本与服务器不同,这表示你尝试连接到的 DbgSrv 版本使用的协议版本与 WinDbg 版本不同。

进行协议更改的情况并不常见。 发生这种情况时,请确保使用最新版本的 DbgSrv 和 WinDbg 或 WinDbg 预览版的匹配版本。 有关下载最新版本的信息,请参阅下载调试工具 for Windows