选择最佳的远程调试方法

执行远程调试的主要方法有两种,还有几种其他方法和大量组合方法。

下面有一些技巧可以帮助你选择最佳方法。

  • 通过调试器进行远程调试通常是最佳方法。 如果你只有一台服务器和一个客户端,并且它们可以自由地相互连接,那么客户端和服务器上都安装了相同的调试器二进制文件,并且将操作客户端的调试技术人员将能够与房间里的服务器人员交谈,这是推荐的方法。

    客户端和服务器可以运行任何版本的 Windows。 它们不必运行彼此相同的版本。

    如果客户端无法向服务器发送连接请求,但服务器能够向客户端发送请求,则可以使用 clicon 参数通过具有反向连接的调试器使用远程调试。

  • 通过 remote.exe 远程调试用于远程控制命令提示符窗口。 可用于远程控制 KD、CDB 或 NTSD。 不能与 WinDbg 一起使用。

    如果客户端没有调试器二进制文件的副本,则必须使用 remote.exe 方法。

  • 如果调试技术人员无法与使用服务器的房间中的人员交谈,则可以使用进程服务器KD 连接服务器。 所有实际调试工作都是由客户端(称为智能客户端)完成的;这就消除了让第二个人出现在服务器本身的需要。

    进程服务器用于用户模式调试;KD 连接服务器用于内核模式调试。 除了这种区别之外,它们的行为方式类似。

    如果运行服务器的计算机无法处理繁重的进程负载,或者运行客户端的技术人员有权访问机密且无法由服务器访问的符号文件或源文件,则此方法也很有用。 但是,此方法不如通过调试器进行远程调试那样快速或高效。 此方法不能用于转储文件调试。

    有关详细信息,请参阅进程服务器(用户模式)KD 连接服务器(内核模式)

  • 重复器是一个轻型代理服务器,用于在两台计算机之间中继数据。 如果通过调试器执行远程调试,或者使用进程服务器,则可以在客户端和服务器之间添加重复器。

    如果客户端和服务器无法直接相互通信,但每次访问外部计算机,但可以各自访问外部计算机,则可能需要使用重复器。 还可以将反向连接与重复器一起使用。 甚至可以连续使用两个重复器,但这很少必须这样做。

    有关详细信息,请参阅重复器

  • 还可以从内核调试器控制 CDB(或 NTSD)。 这是远程调试的另一种形式。 有关详细信息,请参阅从内核调试器控制用户模式调试器

所有这些方法的变体都是可能的。

可以将多台计算机连接在一起,以利用多种传输方法。 可以创建复杂的传输序列,以考虑技术人员所在的位置、符号所在的位置,以及是否有防火墙阻止特定方向的连接。 示例请参阅高级远程调试方案

甚至可以在一台计算机上执行远程调试。 例如,启动一个低权限的进程服务器,然后用一个高权限的智能客户端连接到它,这可能会很有用。