今天做项目时碰到一个问题,线上服务报错,本地环境却没问题,此时就需要我们去线上的机器远程debug,可以采用idea Remove JVM Debug模式。
步骤
第一步:点击Edit Configurations
第二步:点击右上角的 + 号,选择Remove JVM Debug
第三步:指定要连接的远程服务器的host ip和端口Port(默认是5005)
注:如果是购买的云服务器的话,需要在安全组开放对应的端口
第四步:复制剪切板中的参数,加在远程服务器jar包启动命令上
-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=*:5005
nohup java -agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=*:5005 -Xss2m -Dspring.profiles.active=test -jar demo-0.0.1-SNAPSHOT.jar > myout.file 2>&1 &
注:剪切板中的参数一定要放在-jar的前面,否则不起作用。
观察输出日志,如果在前面几行中有如下日志表明远程服务器的远程断点调试端口开放成功
Listening for transport dt_socket at address: 5005
此时,回到本地的idea应用程序,选择之前自己定义的远程断点调试配置,可以发现其只有debug按钮,点击debug按钮即可成功进行远程断点调试。在需要debug的地方打上断点,当远端的程序运行到这个断点时会自动停下。
在IDEA中的与jar包一致的代码中,打断点,调试Remote。
- 此时程序的运行是以远端服务器上的代码为准的,改变本地的代码是无效的。
- 访问jar包的地址,触发断点,此时IDEA 的控制台是不会输出信息的,只能在jar包运行的控制台查看。