进程服务器示例

假设一个人在名为 \\BOX17 的计算机上运行应用程序。 此应用程序有问题,但调试技术人员位于不同的站点。

第一个人在 \\BOX17 上使用 DbgSrv 设置进程服务器。 目标应用程序的进程 ID 为 122。 选择 TCP 协议,套接字端口号为 1025。 使用以下命令启动服务器:

E:\Debugging Tools for Windows> dbgsrv -t tcp:port=1025 

在其他计算机上,技术人员使用以下命令将 WinDbg 作为智能客户端启动:

G:\Debugging Tools> windbg -premote tcp:server=BOX17,port=1025 -p 122 

以下是另一个示例。 在这种情况下,选择 NPIPE 协议,并使用 CDB 而不是 WinDbg。 第一个用户选择管道名称。 这可以是任何字母数字字符串 -- 在此示例中为“AnotherPipe”。 第一个用户 (以管理员身份运行) 打开提升的命令提示符窗口,并通过输入以下命令启动调试服务器:

E:\Debugging Tools for Windows> dbgsrv -t npipe:pipe=AnotherPipe

技术人员使用无权访问服务器计算机的帐户登录到客户端计算机。 但技术人员知道有权访问服务器计算机的帐户的用户名和密码。 该帐户的用户名为 Contoso。 技术人员输入以下命令:

net use \\BOX17\ipc$ /user:Contoso

出现提示时,技术人员输入 Contoso 帐户的密码。

技术人员不确定命名管道使用的名称,因此他们查询 BOX17 以查找进程服务器:

G:\Debugging Tools> cdb -QR \\BOX17
Servers on \\BOX17:
Debugger Server - npipe:Pipe=MainPipe
Remote Process Server - npipe:Pipe=AnotherPipe

显示两个管道。 但是,只有一个是进程服务器 -- 另一个是调试服务器,对此不感兴趣。 因此 ,AnotherPipe 必须是正确的名称。 技术人员输入以下命令以启动智能客户端:

G:\Debugging Tools> cdb -premote npipe:server=BOX17,pipe=AnotherPipe -v sol.exe

有关使用进程服务器的更复杂的示例,请参阅 中间符号