Java项目远程调试实践 - IDEA篇 (其它平台也通用)

   众所周知,Java是在网络环境下诞生的语言,其对网络也非常支持。在IDEA中,点击调试按钮时就能发现:
在这里插入图片描述
调试命令是通过socket传输的。通过java选项得知:

命令 含义
-XDebug 启用调试。
-Xnoagent 禁用默认sun.tools.debug调试器。
-Djava.compiler=NONE 禁止 JIT 编译器的加载。
-Xrunjdwp 加载JDWP的JPDA参考执行实例。
transport 用于在调试程序和 VM 使用的进程之间通讯。
dt_socket 套接字传输。
dt_shmem 共享内存传输,仅限于 Windows。
server=y/n VM 是否需要作为调试服务器执行。
address=9999 调试服务器的端口号,客户端用来连接服务器的端口号。
suspend=y/n 是否在调试客户端建立连接之后启动 VM 。

在远程服务器端使用该命令可以启动调试监听:

java  -Xdebug -Xnoagent -Djava.compiler=NONE -Xrunjdwp:transport=dt_socket,address=9999,
server=y,suspend=y  -jar yourjar.jar

在这里插入图片描述
在客户端同样使用对应的参数进行断点和调试,在IDEA中,配置步骤如下:

1.先打开该JAR的源码项目(要求和打包的JAR是同一份源码,否则调试时会出现字节码不一致的警告)
2.编辑该项目的配置:
Java项目远程调试实践 - IDEA篇 (其它平台也通用)_第1张图片
3.在添加新配置中选择远程,并给予服务端的配套配置(仅仅需要输入IP地址和端口号):
Java项目远程调试实践 - IDEA篇 (其它平台也通用)_第2张图片
4.保存该配置,并且在需要断点的地方添加断点,然后点击调试按钮。现象如下:
Java项目远程调试实践 - IDEA篇 (其它平台也通用)_第3张图片
这样一来,远程项目的调试也就成功了!

最后总结一下完整流程:
1.先将需要调试的代码打包成jar - 右击项目的模块设置,Artifacts中选择From modules with dependencies…
2.将打包的jar发送到服务器端
3.在服务器端开启远程调试监听
4.在客户端配置远程调试地址和端口号
5.启用调试!

你可能感兴趣的:(Java)