使用 Idea 远程调试 Java 代码

  • 目的

    • 当服务器上代码出现错误时,通过日志去分析比较麻烦,有些时候可能还无法准确定位问题的原因;所以通过远程debug联调服务器代码,准确且高效。
  • 服务端配置

    • 首先,我们要让要让远程服务器支持远程调试功能,在项目启动项上追加特定的 JVM 参数即可,参数如下:
      • Command line arguments for running remote JVM(晚于 JDK 1.4.X 版本) 
      • -agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=9508
      • JDK 1.4.X 版本
      • -Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=9508
      • JDK 1.3.X 或早起版本
      • -Xnoagent -Djava.compiler=NONE -Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=9508
    • 第一种:Spring boot 通过 java -jar -agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=9508 xxx.jar & ,配置到启动命令行中;
    • 第二种:在 catalina.bat(linux 环境设置 catalina.sh)中设置 JAVA_OPTS 节点即可。—— 配置服务器Tomcat
      进入$TOMCAT_HOME/bin目录下:
      vi catalina.sh
      #在# OS specific support.上面添加
      export JAVA_OPTS='-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=9508'
  • Idea配置

    • 点击 Edit Configurations,即可进入 Run/Debug Configurations 界面,配置remote:
  • 启动调试

    • 点击下图标识的debug启动标,启动成功会在console面板上输出:Connected to the target VM, address: '140.143.29.146:9508', transport: 'socket'
  • 可能出现的问题及解决方法

    • 问题:
      • 第一个问题:Error running 'remote-ms-collection': Unable to open debugger port (XXXX:9508): java.net.ConnectException "Connection timed out: connect"
      • 第二种问题:IP和端口号都没问题但是"Connection refused"
    • 解决方法:
      • 开启相关端口:
      • vi /etc/sysconfig/iptables 
        
        #在-A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT之后添加
        
        -A INPUT -m state --state NEW -m tcp -p tcp --dport 8080 -j ACCEPT
        
        -A INPUT -m state --state NEW -m tcp -p tcp --dport 9508 -j ACCEPT
        
        
      • 重启防火墙:
        service iptables restart
      • 如果嫌麻烦或者对安全要求不高直接关闭防火墙也行:
        service iptables stop
      • 重启服务
  • 注:远程debug只能同时保证一个客户端连接

参考地址:

https://www.cnblogs.com/krockey/p/5056945.html

https://www.jianshu.com/p/f902ac5d29e4

https://www.jianshu.com/p/aa63146d7e0b

发布了75 篇原创文章 · 获赞 48 · 访问量 35万+

猜你喜欢

转载自blog.csdn.net/KingJin_CSDN_/article/details/84074127