使用 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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值