JAVA远程调试


服务端:

普通的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项目

1) : 编辑 bin 目录下 catalina.sh 如果是 windos 系统 请编辑catalina.bat 。

首先找到 文件中JPDA_ADDRESS 。 ip地址要改成本地局域网IP。端口随意改成一个可用的。

 

image-20190720112233501

2):关闭tomcat (如果已经启动的话)

3) : 启动tomcat (关键)

启动tomcat的时候不能再用./startup.sh 这个命令了。而是用下面的       

1
./catalina.sh jpda start  

4) :如果启动成功tomcat 配置就完成了

 

客户端:

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


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM