美文网首页
jdpa idea 远程调试器 以及Connection ref

jdpa idea 远程调试器 以及Connection ref

作者: 帅气的阿斌 | 来源:发表于2019-12-19 17:31 被阅读0次

    需求场景
    有一天我们后台把项目发布部署到了服务器上,但是出现了一个bug,本地环境下跑却没有任何问题,无法复现!而线上因为各种原因又不能重新部署,那么如果在远程服务器上直接进行调试呢?

    一、tomcat环境下部署的项目,进行远程调试器连接调试

    1.tomcat文件配置
    打开catalina.sh文件
    找到以下代码位置

    if [ "$1" = "jpda" ] ; then
      if [ -z "$JPDA_TRANSPORT" ]; then
    #套接字连接模式
        JPDA_TRANSPORT="dt_socket"
      fi
      if [ -z "$JPDA_ADDRESS" ]; then
    #对外开放用于调试模式的ip地址以及端口 !!!!这里有个很大的坑!!!!.
    #e.g 10.10.10.10:5005
        JPDA_ADDRESS="10.10.10.10:5005"
      fi
      if [ -z "$JPDA_SUSPEND" ]; then
    #是否直接进入调试模式 y表示一启动程序就会挂起等待调试器连接后才继续执行 n表示连接后才进入调试模式
        JPDA_SUSPEND="n"
      fi
      if [ -z "$JPDA_OPTS" ]; then
        JPDA_OPTS="-agentlib:jdwp=transport=$JPDA_TRANSPORT,address=$JPDA_ADDRESS,server=y,suspend=$JPDA_SUSPEND"
      fi
      CATALINA_OPTS="$JPDA_OPTS $CATALINA_OPTS"
      shift
    fi
    

    必须使用以下指令进行启动,这样你线上的项目就拥有了线上远程调试的功能了

    sh catalina.sh jpda start
    

    2、idea进行远程连接调试


    idea进入配置 添加配置 设置 点击小昆虫debug 成功

    踩坑:

    如果你的服务器部署在云服务器上(阿里云、百度云服务器...)

    Unable to open debugger port (10.10.10.10:1111:5005): java.net.ConnectException "Connection refused (Connection refused)"

    JPDA_ADDRESS="10.10.10.10:5005"
    这个是远程服务器调试的链接地址,但是默认情况下tomcat的配置为
    localhost:5005这个回环地址会导致外网无法进行远程调试操作,导致"Connection refused (Connection refused)"

    所以这里必须要明确写下ip地址(坑点2:如果你用的是云服务器,这里的ip地址就是服务器的内网ip,使用外网ip也照样"Connection refused (Connection refused)")

    10.10.10.10:5005或者绑定所有地址0.0.0.0:5005

    相关文章

      网友评论

          本文标题:jdpa idea 远程调试器 以及Connection ref

          本文链接:https://www.haomeiwen.com/subject/qqxvnctx.html