有时候在开发测试阶段,服务器上会出现一些无法定位的bug,需要本地断点进行查看,但是为了和服务器一致,所以需要进行远程调试。
贴个详解的帖子》》》》》》》》》》》》》》》
(注:链接已失效。。。。202310)
一、前提:
在服务器上,应用在启动的时候需要添加以下参数:
-Xdebug -Xrunjdwp:transport=dt_socket,address=2019,server=y,suspend=n
解释:
(1)-Xdebug:
启用调试特性。
(2)-Xrunjdwp:
在目标 VM 中加载 JDWP 实现。它通过传输和 JDWP 协议与独立的调试器应用程序通信,以下是子选项:
transport:
这里通常使用套接字传输。但是在 Windows 平台上也可以使用共享内存传输。
server:
如果值为 y,目标应用程序监听将要连接的调试器应用程序。否则,它将连接到特定地址上的调试器应用程序。
address:
这是连接的传输地址。如果服务器为 n,将尝试连接到该地址上的调试器应用程序。否则,将在这个端口监听连接。
suspend:
如果值为 y,目标 VM 将暂停,直到调试器应用程序进行连接。
二、注意事项
1.远程断点只能有一台机器可以连接,如果有人打了远程断点,则另一个人就没法连接上去了;所以启动远程连接会报无法连接的异常提醒。
2.对于不同包下,类名相同,方法相同的两个类;如果在其中一个打了远程断点,可能会出现,断点乱跳,在两个类之间无法找到自己想要断点的类(详情待查),所以也就无法走到自己想要的断点的地方。
3.打远程断点,需要断点处的类代码,和服务器上服务的代码保持一致。否则断点行数不准,也就无法实现断点调试。
三、以Eclipse为例:
1、点击debug下拉按钮,进入debug配置运行的页面:
2、具体配置见红框:创建一个新的Remote Java Application
(1)project:将要debug的工程。
(2)host:需要debug的远程服务器IP地址,
(3)port:需要debug的远程服务器应用端口号
3、配置完成以后就可以点击debug按钮,就启动了:
这里启动之后,project是不会运行的。进入eclipse的debug主界面,就可以看到在运行状态的 remote debug模式。
红色方框内显示的就是启动后的样式,如果需要关闭,点击黄色的停止,或者红色的断开链接都可以。
当启动远程调试以后,在服务器上进行访问,请求就能转到本地,然后请求到本地的方法了,打断点就可以进行调试了。
超级好用,解决疑难杂症。