Debugging Tools for Windows

激活调试服务器

有两种方法用于激活调试服务器。可以通过使用-server 命令行选项激活。也可以通过在启动调试器之后使用.server 命令激活。

调试器支持几种传输协议:命名管道(NPIPE)、TCP、COM端口、安全pipe(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 (Create Debugging Server)命令。该命令的语法和命令行相似:

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

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

.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替换。
port=Socket
当使用TCP或SSL协议时,Socket 指定套接字端口号。也可以用一个冒号来指定端口范围(例如port=2:7)。调试器会检查该范围内的端口是否可用。如果找到了一个空闲端口并且没有出现错误,调试服务器会被创建起来。调试客户端需要指定用于连接到服务器的实际端口号。(如果使用了clicon参数来进行反向连接,调试客户端也可以按这种方式指定端口范围,调试服务器必须指定实际使用的端口。)
clicon=Client
当使用TCP或SSL协议并指定clicon参数时,一个反向连接会被打开。这意味着调试服务器会试图连接调试客户端,而不是由客户端来发起连接。这在当防火墙阻止通常方向上的连接时会比较有效。客户端指定调试客户端所在的计算机的网络名或IP地址。两个反斜杠(\\)是可选的。

如果使用服务器来寻找特定客户端的方式,就不能将多个客户端连接到一个服务器。如果连接被拒绝或丢失,必须重起服务器的连接。当另一个调试器显示所有活动服务器时,反向连接服务器不会出现。

注意 如果使用了clicon,最好在调试服务器创建之前就启动调试客户端,虽然常规顺序(服务器在客户端之前启动)也可以使用。

port=COMPort
当使用COM协议时,COMPort 指定所使用的COM端口。前缀"COM" 是可选的—如, "com2" 和"2" 都可以。
baud=BaudRate
使用COM协议时,BaudRate 指定连接所使用的波特率。硬件支持的所有波特率都可以使用。
channel=COMChannel
如果使用COM协议,COMChannel 指定和调试客户端通信所使用的COM频道。它可以是0到254之间的任意值(包含0和254)。单个COM端口可以通过使用不同的频道号来支持多个连接。 (这和调试电缆使用COM的情况不同—那种情况下COM端口不能使用频道。)
proto=Protocol
如果使用SSL或SPIPE,Protocol 指定安全频道(S-Channel)协议。它可以是tls1、pct1、ssl2ssl3
Cert
如果使用SSL或SPIPE协议,Cert 用于指定证书。它可以是证书名或证书的指纹(由证书管理机构提供的16进制数字字符串)。如果使用certuser=Cert 形式的语法,调试器会在系统中查找证书(默认存储位置)。如果使用machuser=Cert 的语法,调试器在机器存储中查找证书。指定的证书必须支持服务器验证。
hidden
避免服务器在另一个调试器显示所有活动服务器时被显示出来。
password=Password
要求客户端在连接到调试会话时提供指定的密码。Password 可以是任何字母和数字。

警告 在TCP、NPIPE或COM协议下使用密码仅提供低程度的保护,因为密码不会被加密。当密码和SSL或SPIPE协议一起使用时,会被加密。如果需要安全的远程会话,必须使用SSL或SPIPE协议!

ipversion=6
(仅Debugging Tools for Windows 6.6.07 和更老的版本) 用TCP连接到Internet时强制调试器使用IPV6而不是V4。在Windows Vista和之后版本中,调试器会尝试默认使用IP v6
,所以没有必要使用该选项。

-noio
如果调试器使用-noio 选项一起启动,通过服务器就本身不能进行输入输出了。调试器仅接收来自调试客户端的输入(加上任何初始命令或通过-c命令行选项指定的命令脚本)。所有输出都被定向到调试客户端。-noio 选项仅在KD、CDB和NTSD可用。如果用NTSD作为服务器,则不会创建控制台窗口。
IcfEnable
(仅Windows XP和之后版本) 使得当Internet连接防火墙启动时,调试器启用TCP或命名管道所需要的端口。默认情况下,Internet连接防火墙会禁止这些协议所使用的端口。TCP连接使用IcfEnable后,调试器会让Windows打开Socket 参数所指定的端口。命名管道连接使用IcfEnable 后,调试器会让Windows打开命名管道所使用的端口(139端口或445端口)。调试器在连接关闭后,不会关闭这些被打开的端口。
Options
任何更多的命令行参数都可以放在这里。完整列表查看命令行选项

可以使用.server 命令来使用不同的协议选项启动多个服务器。这使得不同类型的调试客户端可以加入到会话中。

Build machine: CAPEBUILD