首页 > 编程语言 > 详细

JAVA远程调试

时间:2020-03-08 14:52:42      阅读:67      评论:0      收藏:0      [点我收藏+]

服务端:

普通的jar项目

jdk1.7之后使用命令:

java -agentlib:jdwp=transport=dt_socket,address=8000,server=y,suspend=y -jar test-remove-debug.jar

jdwp:是 Java Debug Wire Protocol的缩写
server=y表示是监听其他debugclient端的请求
address=8000表示服务会在端口号8000监听debug请求,客户端必须设置这个端口号才能进行dubug
suspend表示是否在调试客户端建立连接之后启动 VM。如果为y,那么当前的VM就是suspend直到有debug client连接进来才开始执行程序。如果你的程序不是服务器监听模式并且很快就执行完毕的,那么可以选择在y来阻塞它的启动,当然如果是服务器监听模式设置为n;

 

放在tomcat下面的web项目

修改/usr/local/apache-tomcat-8.0.39/bin/startup.sh
添加declare -x CATALINA_OPTS="-server -Xdebug -Xnoagent -Djava.compiler=NONE -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=8788"
通过ps -aux|grep tomcat查看启动的tomcat进程,刚才配置的-Xdebug等选项出现在进程信息中,证明配置成功

 

客户端:

eclipase:

设置 Debug configurations-->Remote Java Application

技术分享图片

注意在点击【Debug】按钮之前,一定不要多次“启动本地程序”,否则就会出现"Failed to connect to remote VM. Connection refused"异常,如下图所示:

技术分享图片

3. 调试远程客户端

点击【Debug configurations】中的debug按钮,运行效果如下,接下来,就和本地调试一模一样了。在调试过程中,日志打印在远程服务器,本地console中看不到日志信息。如果是项目为web项目,调试的时候需要一个Http客户端发起请求,比如postman等等。

 技术分享图片

条件断点

如果需要对循环中的数据进行调试,使用条件断点是个不错的选择。将断点设置在指定的位置上,右键进一步设置断点属性,如下:

 技术分享图片

调试时,程序会中断在符合条件的代码处。

 

异常断点

断点不仅可以设置在某一行,也可以针对整个工程进行设置。假设你知道程序会在某个地方抛出NullPointerException,可是并不是每一次运行都会出现,就可以为工程设置异常断点,如下:

 技术分享图片

idea客户端

  • 1.在Host中填写远程ip,在Port中填写debug的端口。
  • 2.设置远程jar包对应的本地源码项目
    技术分享图片

同样的。如果是项目为web项目,调试的时候需要一个Http客户端发起请求,比如postman等等。

 

备注:

备注转自如下四篇篇博文,稍作修改。

https://blog.51cto.com/204222/2115352

https://www.cnblogs.com/jianliang-Wu/p/7110681.html

https://www.cnblogs.com/east7/p/10285955.html

https://blog.csdn.net/tengdazhang770960436/article/details/85254026

JAVA远程调试

原文:https://www.cnblogs.com/ykpkris/p/12441850.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!