JVM、TOMCAT 远程断点调试
1 基于JVM远程调试
1.1 演示
本例子演示java命令对jar或者class远程断点调试。
-
以一个简单的jar为例,先生成可运行jar
图 1
图 2
图 3
图 4
-
运行jar -agentlib:jdwp=transport=dt_socket,suspend=y,address=8000
图 5
-
debug程序
图 6
图 7
-
进入调试
图 8
2 TOMCAT远程调试
2.1 演示
-
开启jpda
Tomcat启动脚本主要在catalina.sh文件中,startup.sh和shutdown.sh脚本只是执行
./catalina.sh start和/catalina.shstop命令。
开启jpda只需只执行./cataline.sh jpda start即可开启jpda,其中参数默认值如图。
图 9
-
改变参数值。
只需在文件中设置对应的JPDA_TRANSPORT,JPDA_ADDRESS,JPDA_SUSPEND等值
-
配置eclipse debug
配置eclipse,点击debug
图 10
-
Debug
加个断点,点击页面操作(http://192.168.254.217:8280/ym-tweet/ga.do)。如图
图 11
3 参数说明
Xdebug
启用调试特性。
-Xrunjdwp:<sub-options>
在目标 VM 中加载 JDWP 实现。它通过传输和JDWP 协议与独立的调试器应用程序通信。下面介绍一些特定的子选项。
从 Java V5 开始,您可以使用 -agentlib:jdwp 选项,而不是-Xdebug 和 -Xrunjdwp。但如果连接到 V5 以前的 VM,只能选择 -Xdebug 和-Xrunjdwp。下面简单描述-Xrunjdwp 子选项。
1.5以前版本(1.5以后也可用):
【-Xdebug-Xrunjdwp:transport=dt_socket,server=y,address=8000 】
1.5及以上版本:
【-agentlib:jdwp=transport=dt_socket,server=y,address=8000】
example:
java -Xdebug -Xrunjdwp:transport=dt_socket,server=y,address=8000-jar test.jar
transport
这里通常使用套接字传输。但是在Windows 平台上也可以使用共享内存传输。
server
如果值为 y,目标应用程序监听将要连接的调试器应用程序。否则,它将连接到特定地址上的调试器应用程序。
address
这是连接的传输地址。如果服务器为 n,将尝试连接到该地址上的调试器应用程序。否则,将在这个端口监听连接。
suspend
如果值为 y,目标 VM 将暂停,直到调试器应用程序进行连接