什么是远程调试?

什么是远程调试?我们使用IDEA本地的时候运行可以打本地的Debug,但是若我们的服务在线上呢?我们的服务部署到了服务器上面,比如服务器的IP为 127.0.0.1接下来我们开始远程调试!

Jar包的启动命令

//前面一直到-jar都直接复制即可
java -Xdebug -Xrunjdwp:server=y,transport=dt_socket,address=8888,suspend=y  -Xmx1024m -Xms1024m -jar 这里是你的包名.jar - &

参数说明:
-Xdebug 是通知JVM工作在DEBUG模式下。

-Xrunjdwp是通知JVM使用(java debug wire protocol)来运行调试环境。

transport是监听Socket端口连接方式(也可以dt_shmem共享内存方式,但限于windows机器,并且服务提供端和调试端只能位于同一台机)。

server=y表示当前是调试服务端,=n表示当前是调试客户端。suspend=n表示启动时不中断(如果启动时中断,一般用于调试启动不了的问题)。

address=8000表示本地监听8000端口。

suspend:suspend=n表示启动时不中断,一般用于设置主动连接;suspend=y表示启动时就进入调试模式,一般用于被动连接,当本地连接时,应用才会启动;

配置本地的IDEA

点击右上角的编辑我们的启动项配置

java远程调试参数 远程调试jar_jar


点击左上角的【+】号,选择远程JVM调试

java远程调试参数 远程调试jar_JVM_02


添加JVM调试,若你不是中文则选择:Remote JVM Debug

java远程调试参数 远程调试jar_java_03


若你部署的jar不是本地的就不用127.0.0.1 这里的主机指的是你刚刚上面部署jar包的主机,首先保证你的机器是可以链接该主机的,否则调试会失败!

java远程调试参数 远程调试jar_java_04

常见错误:

1.连接的时候会出错,那是你本地必须可以访问主机的ip才可以调试
2.主机的端口号码这里是设置的是8888,那么你jar启动的时候在我给你的命令一行中,也有个8888是相对应的可以自定义。
3.服务器的jar包版本必须与你本地的一样才可以调试否则出错。

连接成功!

java远程调试参数 远程调试jar_jvm_05