Java远程调试
远程项目报错,但是通过日志等手段没法定位问题,只能提供远程调试的方式定位问题。
1. 步骤
1.1 启动调试端口
业务有自己的端口,而为了能够调试业务,需要另外开启一个端口用于调试。
在java虚拟机设置中增加如下配置:
JAVA_OPS="$JAVA_OPS -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=9787"
-Xrunjdwp加载JDWP的JPDA参考执行实例;
transport用于在调试程序和VM使用的进程之间通讯;
dt_socket套接字传输;
address=9787标示调试端口;
server=y标示VM是否需要作为调试服务器执行;
suspend=y是否在调试客户端建立连接之后启动VM,如果设置为y,则有如下日志:
Listening for transport dt_socket at address: 9787
直到本地也启动工程。
1.2 启动本地服务
以debug模式启动业务,比如使用eclipse
1.3 调试
启动本地业务之后,就可以在本地业务代码中直接增加断点,然后调用远程业务,就可以自动在本地进行代码调试。
注意:本地工程代码要与远程运行项目的代码完全一致,否则会有调试行不对应的情况。