选择最佳远程调试方法
执行远程调试的主要方法有两种,还有几种其他方法和大量组合方法。
下面是一些提示,可帮助你选择最佳技术。
通过调试器进行远程调试 通常是最佳方法。 如果你只有一台服务器和一个客户端,并且它们能够自由地相互连接,那么在客户端和服务器上安装同一个调试器二进制文件,并且操作客户端的调试技术人员能够与在服务器所在房间的某人直接沟通,这是推荐的方法。
客户端和服务器可以运行任何版本的 Windows。 它们不必彼此运行相同的版本。
如果客户端无法向服务器发送连接请求,但服务器能够向客户端发送请求,那么可以通过在调试器中使用 反向连接,加上 clicon 参数,来进行远程调试。
通过 remote.exe 进行远程调试以远程控制命令提示符窗口。 它可用于远程控制 KD、CDB 或 NTSD。 它不能与 WinDbg 一起使用。
如果客户端没有调试器二进制文件的副本,则必须使用 remote.exe 方法。
如果调试技术人员无法与使用服务器的房间中的人员交谈,则可以使用进程服务器或 KD 连接服务器。 客户端完成所有实际调试工作(称为 智能客户端);这样就不再需要在服务器本身存在第二个人。
进程服务器用于用户模式调试;KD 连接服务器用于内核模式调试。 除了这种区别之外,它们的行为方式也类似。
如果运行服务器的计算机无法处理繁重的进程负载,或者运行客户端的技术人员有权访问机密且无法由服务器访问的符号文件或源文件,则此方法也很有用。 但是,此方法的速度并不如通过调试器进行远程调试那么快或高效。 此方法不能用于转储文件调试。
有关详细信息,请参阅 进程服务器(用户模式) 和 KD 连接服务器(内核模式)。
中继器 是一个轻型代理服务器,用于在两台计算机之间中继数据。 如果要通过调试器执行远程调试,或者使用的是进程服务器,则可以在客户端和服务器之间添加一个中继器。
如果客户端和服务器无法直接相互通信,但都能访问外部计算机,则可能需要使用中继器。 还可以将反向连接与重复器一起使用。 甚至可以连续使用两个中继器,但这很少是必要的。
有关详细信息,请参阅 中继器。
还可以从内核调试器控制 CDB (或 NTSD)。 这是另一种远程调试形式。 有关详细信息,请参阅从内核调试器控制用户模式调试器。
所有这些方法的变体都是可能的。
可以将多个计算机链接在一起,以利用多个传输方法。 可以创建复杂的传输序列,以考虑技术人员所在的位置、符号所在的位置,以及是否有防火墙阻止特定方向的连接。 有关一些示例,请参阅 高级远程调试方案。
甚至可以在单个计算机上执行远程调试。 例如,启动低特权进程服务器,然后使用高特权智能客户端连接到该服务器可能很有用。
重要
使用远程调试时,有一些重要的安全注意事项。 有关详细信息,包括有关启用安全模式的信息,请参阅 远程调试期间的安全性 和 Windows 调试工具的安全注意事项 。