Java程序远程调试

介绍说明

作为程序员都知道,本地代码可以是可以debug进行逐行调试的,但是一旦部署在上产环境上,并出现了一些问题的时候不得逐行打印日志用来排查问题;其实如果是集群形式下,可以切换一台机器进行远程bug调试跟踪一下,所以远程debug模式调试非常方便的能够处理线上问题。

tomcat配置

方法一

startup.sh 中的最后一行 exec "$PRGDIR"/"$EXEXUTABLE" start "$@"中的start修改成 jpda start,默认的调试端口是8000 ,可以在catalina.sh文件中设置JPDA_APPDESS=8000使用startup.sh 或者catalina.sh jpda start 启动tomcat

方法二

catalina.sh里添加:

CATALINA_OPTS="-server -Xdebug -Xnoagent -Djava.compiler=NONE -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=8899" 

jboss 配置

打开JBOSS_HOME/bin目录下的run.conf文件,找到:

#JAVA_OPTS="$JAVA_OPTS -Xdebug -Xrunjdwp:transport=dt_socket,address=8787,server=y,suspend=y"

将其修改为:

 JAVA_OPTS="$JAVA_OPTS -Xdebug -Xrunjdwp:transport=dt_socket,address=8787,server=y,suspend=n"

8787为调试的端口号。

说明

    连接到myhost:8899提供的调试服务

    -Xdebug是通知JVM工作在DEBUG模式下,

    -Xrunjdwp是通知JVM使用(Java debug wire protocol)来运行调试环境。该参数同时了一系列的调试选项:

    transport指定了调试数据的传送方式

    dt_socket            是指用SOCKET模式

    server=y/n            VM 是否需要作为调试服务器执行。

    suspend=y/n           是否在调试客户端建立连接之后启动 VM 。

    启动服务端

问题

可能出现的连接问题:

Failed to connect to remote VM. Connection refused.

Connection refused: connect。
image.png

不要慌,没关系,出现如上图所示的情况可能是已经建立了一个连接了。解决方法:去debug透视图中:

image.png

找到点击
image.png

jar 文件配置

java -Xdebug -Xrunjdwp:server=y,transport=dt_socket,address=8000,suspend=n -jar demo.jar

说明

本文只做学习参考,如有任何不准确的地方欢迎指正。

我的邮箱: [email protected]

版权声明:

本文为博主原创文章,转载请附上原文出处链接和本声明。

你可能感兴趣的:(Java程序远程调试)