服务端:
普通的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。端口随意改成一个可用的。
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