借助调试器的客户机/服务器设计,您可以调试在网络中的其它系统上远程运行的程序以及在工作站上本地运行的程序。调试器服务器(也称为调试引擎)与您想调试的程序运行在同一系统上。此系统可以是您的工作站,或者是可通过网络来访问的系统。如果您调试在工作站上运行的程序,则您正在执行本地调试。如果您调试在可通过网络连接访问的系统上运行的程序,则您正在执行远程调试。
借助远程调试,可以在某个系统上运行应用程序并从您的工作站控制它。本地系统运行调试器用户界面,远程系统同时运行调试引擎和程序。要能够远程调试,需要对正在调试的程序文件所驻留的远程机器的访问权。用来编译程序文件的源文件可以位于远程机器或本地系统上。
远程调试时,可能需要配置规则来关闭个人防火墙。某些公司的防火墙可能不允许您连接至外部机器。要确定是否可以执行一些操作以连接至远程机器,与站点管理员联系。
无论是正在远程或本地调试程序,调试器用户界面都将使用调试守护进程来侦听调试引擎。一旦启动了调试引擎,则可以建立连接,并且可以继续执行调试操作。
“调试守护进程”和“调试引擎”
调试守护进程是用户界面的一部分,它开始侦听引擎连接。当启动本地调试会话(使用启动配置)时,将自动启动守护进程。当启动远程引擎时,可能需要手工启动守护进程。有关侦听调试引擎的信息,请参阅相关主题。
重要: 视操作系统和语言的不同,调试引擎也有所不同。它们支持的调试操作类型也不同。如果调试引擎不支持某个调试操作,则在调试器用户界面中将禁用或者不提供该操作。下面是一些调试操作和用户界面元素的示例,视调试引擎而有所不同:
- 创建和安装所有断点类型的能力。根据当前选择的调试目标的功能而在调试器用户界面中启用断点操作。
- 可用变量的表示及设置缺省表示的能力。
- 对于编辑器可用的源代码视图。
- 终止异常终止操作。
为何使用远程调试?
可以证明远程调试在许多情况下都是有用的,例如:
- 要调试的程序可以在另一个系统上运行,并且在该系统上的行为与在您自己系统上的行为可能不同。可以使用远程调试功能在相对于本地系统的(另一个)远程系统上调试此程序。在运行该程序的系统上,用户象平时一样与程序进行交互作用(除非断点或单步命令产生了延迟),并且能够从本地系统中控制程序和观察远程程序的内部行为。远程调试的外观和行为与本地调试都很相似,只不过可能存在网络延迟而已。
- 您可能想调试使用图形或者具有图形用户界面(GUI)的程序。当您使调试器用户界面(UI)与应用程序本身的用户界面保持分开时,更容易调试使用图形或者具有图形用户界面的应用程序。您(或者另一个用户)与应用程序的交互作用发生在远程系统上,而您与调试器的交互作用发生在本地系统上。
- 可能已经为调试器用户界面将不会运行的平台编译了您正在调试的程序。当调试在远程机器上运行的应用程序时,可以使用远程调试功能来利用本地机器上的调试器用户界面。