激活调试服务器

有两种方法可用于激活调试服务器。 当在提升的命令提示符窗口中(以管理员身份运行),使用 -server 命令行选项启动调试器时,可以将其激活。 也可以在调试器在运行后将其激活。 使用提升的特权启动调试器(以管理员身份运行),然后输入 .server 命令。

注意 可以在没有提升的特权的情况下激活调试服务器,并且调试客户端将能够连接到服务器。 但是,除非客户端使用了提升的特权激活,否则客户端将无法发现调试服务器。 有关如何发现调试服务器的信息,请参阅搜索调试服务器

调试器支持多种传输协议:命名管道 (NPIPE)、TCP、COM 端口、安全管道 (SPIPE) 和安全套接字层 (SSL)。

用于激活调试服务器的常规语法取决于使用的协议。

Debugger -server npipe:pipe=PipeName[,hidden][,password=Password][,IcfEnable] [-noio] [Options]

Debugger -server tcp:port=Socket[,hidden][,password=Password][,ipversion=6][,IcfEnable] [-noio] [Options]

Debugger -server tcp:port=Socket,clicon=Client[,password=Password][,ipversion=6] [-noio] [Options]

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

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

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

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

另一种激活调试服务器的方法是在已启动调试器后,使用 .server(创建调试服务器)命令。

.server npipe:pipe=PipeName[,hidden][,password=Password][,IcfEnable] 

.server tcp:port=Socket[,hidden][,password=Password][,ipversion=6][,IcfEnable] 

.server tcp:port=Socket,clicon=Client[,password=Password][,ipversion=6] 

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

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

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

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

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

Debugger
可以是 KD、CDB、NTSD 或 WinDbg。

pipe=PipeName
使用 NPIPE 或 SPIPE 协议时,PipeName 是将用作管道名称的字符串。 每个管道名称都应标识唯一的调试服务器。 如果尝试重用管道名称,将收到一条错误消息。 PipeName 不得包含空格或引号。 PipeName 可以包含数字 printf 样式的格式代码,如 %x%d。 调试器会将此代码替换为调试器的进程 ID。 第二个此类代码将被替换为调试器的线程 ID。

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

port=Socket
使用 TCP 或 SSL 协议时,Socket 是套接字端口号。

还可以指定用冒号分隔的端口范围。 调试器将检查此范围中的每个端口,以了解是否可用。 如果发现可用端口且未出错,则将创建调试服务器。 调试客户端必须指定要用于连接到服务器的实际端口。 若要确定实际端口,请使用搜索调试连接服务器中介绍的任一方法;显示此调试服务器时,该端口后面将紧跟两个用冒号分隔的数字。 第一个数字将是使用的实际端口;可以忽略第二个数字。 例如,如果将端口指定为 port=51:60,并且实际上使用了端口 53,则搜索结果将显示“port=53:60”。 (如果使用 clicon 参数建立反向连接,调试客户端可以采用这种方式指定端口范围,而服务器必须指定使用的实际端口。)

clicon=Client
使用 TCP 或 SSL 协议并指定 clicon 参数时,将打开反向连接。 这意味着,调试服务器将尝试连接到调试客户端,而不是让客户端启动联系。 如果防火墙阻止了正常方向的连接,这将非常有用。 Client 指定调试客户端所在或将创建调试客户端的计算机的网络名称或 IP 地址。 两个初始反斜杠 (\) 是可选的。

由于服务器正在查找特定客户端,因此如果使用此方法,则无法将多个客户端连接到服务器。 如果连接被拒绝或已断开,则必须重启服务器连接。 当另一个调试器显示所有活动服务器时,反向连接服务器不会显示。

注意 在使用 clicon 时,最好在创建调试服务器之前启动调试客户端,但也允许遵循正常顺序(服务器在客户端之前)。

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

baud=BaudRate
使用 COM 协议时,BaudRate 指定连接运行时的波特率。 允许使用硬件支持的任何波特率。

channel=COMChannel
如果使用 COM 协议,COMChannel 指定要用于与调试客户端通信的 COM 通道。 这可以是 0 和 254 之间(含)的任何值。 可以使用不同的通道号将单个 COM 端口用于多个连接。 (这不同于将 COM 端口用于调试电缆,在那种情况下,不能在 COM 端口中使用通道。)

proto=Protocol
如果使用 SSL 或 SPIPE 协议,Protocol将指定安全通道(S 通道)协议。 这可以是字符串 tls1、pct1、ssl2 或 ssl3 中的任一个。

Cert
如果使用 SSL 或 SPIPE 协议,Cert 指定证书。 这可以是证书名称或证书的指纹(证书管理单元提供的十六进制数字字符串)。 如果使用语法 certuser=Cert,调试器将在系统存储区(默认存储区)中查找证书。 如果使用语法 machuser=Cert,调试器将在计算机存储区中查找证书。 指定的证书必须支持服务器身份验证。

hidden
当另一个调试器显示所有活动服务器时,阻止服务器显示。

password=Password
要求客户端提供指定的密码,以便连接到调试会话。 Password 可以是任意字母数字字符串,长度最多为 12 个字符。

警告 将密码与 TCP、NPIPE 或 COM 协议配合使用时,仅提供少量的保护,因为密码未加密。 将密码与 SSL 或 SPIPE 协议配合使用时,将对其进行加密。 如果要建立安全的远程会话,则必须使用 SSL 或 SPIPE 协议。

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

-noio
如果使用 -noio 选项创建调试服务器,则无法通过服务器本身执行任何输入或输出。 调试器将仅接受调试客户端的输入(以及 -c 命令行选项指定的任何初始命令或命令脚本)。 所有输出都将定向到调试客户端。 -noio 选项仅适用于 KD、CDB 和 NTSD。 如果将 NTSD 用于服务器,则根本不会创建控制台窗口。

IcfEnable
促使调试器在 Internet 连接防火墙处于活动状态时启用 TCP 或命名管道通信所需的端口连接。 默认情况下,Internet 连接防火墙会禁用这些协议使用的端口。 将 IcfEnable 与 TCP 连接配合使用时,调试器会导致 Windows 打开 Socket 参数指定的端口。 将 IcfEnable 与命名管道连接配合使用时,调试器会促使 Windows 打开用于命名管道的端口(端口 139 和 445)。 连接终止后,调试器不会关闭这些端口。

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

可以使用 .server 命令,使用不同的协议选项启动多台服务器。 这允许不同类型的调试客户端加入会话。

另请参阅

控制远程调试会话

.endsrv(结束调试服务器)