jdpa idea 远程调试器 以及Connection ref

2019-12-19  本文已影响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

上一篇 下一篇

猜你喜欢

热点阅读