# Eclipse 远程调试(Remote Debug)

有时候在开发测试阶段,服务器上会出现一些无法定位的 bug,需要本地断点进行查看,但是为了和服务器一致,所以需要进行远程调试。

# 一、前提:

在服务器上,应用在启动的时候需要添加以下参数:

-Xdebug -Xrunjdwp:transport=dt_socket,address=2019,server=y,suspend=n
1

解释: (1)-Xdebug: 启用调试特性。 (2)-Xrunjdwp: 在目标 VM 中加载 JDWP 实现。它通过传输和 JDWP 协议与独立的调试器应用程序通信,以下是子选项: transport: 这里通常使用套接字传输。但是在 Windows 平台上也可以使用共享内存传输。 server: 如果值为 y,目标应用程序监听将要连接的调试器应用程序。否则,它将连接到特定地址上的调试器应用程序。 address: 这是连接的传输地址。如果服务器为 n,将尝试连接到该地址上的调试器应用程序。否则,将在这个端口监听连接。 suspend: 如果值为 y,目标 VM 将暂停,直到调试器应用程序进行连接。

# 二、注意事项

# 1. 远程断点只能有一台机器可以连接,如果有人打了远程断点,则另一个人就没法连接上去了;所以启动远程连接会报无法连接的异常提醒。

# 2. 对于不同包下,类名相同,方法相同的两个类;如果在其中一个打了远程断点,可能会出现,断点乱跳,在两个类之间无法找到自己想要断点的类(详情待查),所以也就无法走到自己想要的断点的地方。

# 3. 打远程断点,需要断点处的类代码,和服务器上服务的代码保持一致。否则断点行数不准,也就无法实现断点调试。

# 三、以 Eclipse 为例:

# 1. 点击 debug 下拉按钮,进入 debug 配置运行的页面:

picture

# 2. 具体配置见红框:创建一个新的 remote app

(1)project:是需要 debug 的工程。 (2)host:是需要远程的主机, (3)port:需要远程的主机需要调试的应用端口号 picture

# 3. 配置完成以后就可以点击 debug 按钮,就启动了:

这里启动之后,project 是不会运行的。进入 eclipse 的 debug 主界面,就可以看到在运行状态的 remote debug 模式。 红色方框内显示的就是启动后的样式,如果需要关系,点击黄色的停止,或者红色的断开链接都可以。 当启动以后,服务器上进行访问,就能请求到本地的方法了,打断点就可以进行调试了。