激活 Repeater

若要激活重复程序连接,通常首先启动服务器,然后启动重复程序,然后启动客户端。

也可以先启动重复程序,然后再启动服务器。 但是,除非使用 clicon 参数建立反向连接,否则客户端必须始终最后启动。

重要

使用远程调试时,有一些重要的安全注意事项。 有关详细信息,包括有关启用安全模式的信息,请参阅远程调试 期间 安全性,以及 Windows 调试工具安全注意事项。

步骤 1:启动服务器

服务器可以是调试服务器、进程服务器或 KD 连接服务器。 可以像平常一样启动此操作,但传输协议设置将用于连接到中继器,而不是客户端。 有关详细信息,请参阅 激活调试服务器激活进程服务器,或 激活 KD 连接服务器

如果在创建服务器时使用密码,则在客户端附加时需要此密码,但在创建中继器时不需要此密码。

如果使用 隐藏 参数,服务器将照常隐藏。 重复器本身始终处于隐藏状态。

步骤 2:启动重复程序

Windows 调试工具中包含的重复器称为 DbEngPrx(dbengprx.exe)。

DbEngPrx 了解以下传输协议:命名管道(NPIPE)、TCP 和 COM 端口。

如果客户端和服务器正在使用安全套接字层 (SSL) 协议,则应对中继器使用 TCP 协议。 如果客户端和服务器正在使用安全管道(SPIPE)协议,则应为中继器使用 NPIPE 协议。 中继器将传递它接收的任何数据 -- 它不解释、加密或解密任何信息。 所有加密和解密将由客户端和服务器完成。

DbEnPrx 命令行的语法如下所示:

dbengprx [-p] -cClientTransport-sServerTransport

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

-p
即使删除了与 DbEngPrx 的所有连接,DbEngPrx 也会继续存在。

ClientTransport
指定要用于连接到服务器的协议设置。 协议应与创建服务器时使用的协议匹配。 协议语法如下所示:

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] 

协议参数具有以下含义:

服务器
这是创建服务器的计算机的网络名称或 IP 地址。 两个初始反斜杠 (\) 是可选的。

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

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

clicon
指定服务器将尝试通过反向连接连接到中继器。 ClientTransport 必须使用 clicon,前提是服务器正在使用 clicon。 在大多数情况下,在使用反向连接时,在服务器之前启动重复程序。

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

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

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

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

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

ServerTransport
指定客户端连接到中继器时将使用的协议设置。 可能的协议语法包括:

npipe:pipe=PipeName[,hidden][,password=Password][,IcfEnable] 
tcp:port=Socket[,hidden][,password=Password][,IcfEnable] 
tcp:port=Socket,clicon=Client[,password=Password] 
com:port=COMPort,baud=BaudRate,channel=COMChannel[,hidden][,password=Password] 

协议参数具有以下含义:

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

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

还可以指定用冒号分隔的端口范围。 DbEngPrx 将检查此范围中的每个端口,以查看它是否可用。 如果找到免费端口且未发生错误,将创建中继器。 客户端必须指定用于连接到中继器的实际端口。 若要确定实际端口,请搜索中继器;显示此重复器时,端口后跟两个用冒号分隔的数字。 第一个数字将是使用的实际端口;可以忽略第二个。 例如,如果将端口指定为 port=51:60,并且实际使用了端口 53,则搜索结果将显示“port=53:60”。 (如果使用 clicon 参数建立反向连接,则客户端可以采用这种方式指定端口范围,而重复程序必须指定使用的实际端口。

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

由于重复程序正在寻找一个特定的客户端,因此如果使用此方法,则无法将多个客户端连接到中继器。 如果连接被拒绝或断开,则必须重启重复程序。

使用 clicon 时,最好在创建重复程序之前启动客户端,尽管也允许通常的顺序(客户端之前的重复程序)。

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

baud=BaudRate
使用 COM 协议时,BaudRate 指定连接将运行时的波特率。 允许硬件支持的任何波特率。 如果在 ClientTransportServerTransport 都使用 COM 协议,则可以指定不同的波特率,但速度变慢将是客户端和服务器相互通信的速度限制。

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

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

password=密码
要求客户端提供指定的密码才能连接到调试会话。 密码 可以是任何字母数字字符串。

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

步骤三:启动客户端

客户端应是调试客户端或智能客户端 -- 与服务器类型相对应。 有关详细信息,请参阅 激活调试客户端激活智能客户端,或 激活智能客户端(内核模式)

如果服务器拒绝连接(例如,如果提供不正确的密码),则中继器和客户端都将关闭。 必须重启这两个服务器才能重新建立与服务器的联系人。