java项目的远程调试

我们在工作中可能会遇到这样的场景,有时候有个问题在本地环境不重现开发或者测试环境的问题,而这个问题需要急需解决的情况。更有部分项目在本地无法启动,需要依赖在服务器启动,有时候可以尝试远程调试。

我这里用springboot项目,做一下演示;
在现在项目启动,基本都是采用start.sh文件来启动,如果需要远程用idea,连接到服务器。需要在启动的时候添加一行参数启动。

1、启动项目时配置远程连接参数

-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=65532

address:是我们自定义的端口号,需要注意的情况是。在启动的服务器中,这个端口号不能够重复。

下面是我示范项目中中的start.sh文件,如果我们自己演示用start.sh文件可能会有点麻烦。这个时候可以用这种方式启动springboot项目。

nohup jar  agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=65532 -jar lib/database-project-0.0.1-SNAPSHOT.jar > nohup.out  &

下面是start.sh文件。如果对start.sh来启动感兴趣,可以参考
https://blog.csdn.net/fajing_feiyue/article/details/103941903

#!/usr/bin/env bash

#source $(dirname $0)/../../env.sh
SERVERJAR="database-project-0.0.1-SNAPSHOT.jar"
base_dir=$(dirname $0)
cd ..
if [ -r "$base_dir/setenv.sh" ]; then
 . "$base_dir/setenv.sh"
fi

if [ "$JAVA_HOME" != "" ]; then
 JAVA="$JAVA_HOME/bin/java"
else
  JAVA=java
fi



JAVA_OPTS="-server -Xms64m -Xmx64m -Xmn48m -Xss256K   -XX:SurvivorRatio=4  -XX:+UseConcMarkSweepGC -XX:+UseCMSCompactAtFullCollection -XX:CMSInitiatingOccupancyFraction=60 -XX:+PrintGCDateStamps -XX:+PrintGCDetails -Xloggc:$base_dir/gc.log -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=9998 -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false -Djava.rmi.server.hostname=192.168.25.128"

JAVA_DEBUG_OPT="-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=65532"

echo -n "Starting server ..."
    PID=$(ps -ef | grep database-project-0.0.1-SNAPSHOT.jar | grep -v grep |awk '{print $2}')
if [ -z "$PID" ]; then
   echo Application is already stopped
else
    echo kill $PID
    kill -9 $PID
fi

echo `pwd`
echo $SERVERJAR
echo $JAVA
echo $JAVA_OPTS
echo $JAVA_DEBUG_OPT
#nohup $JAVA $JAVA_OPTS $JAVA_DEBUG_OPT -jar $base_dir/lib/$SERVERJAR > $base_dir/nohup.out &
nohup $JAVA $JAVA_OPTS $JAVA_DEBUG_OPT -jar lib/$SERVERJAR > $base_dir/nohup.out  &

if [ $? -eq 0 ];then
 # echo -n $! > "$PIDFILE"
  if [ $? -eq 0 ]
  then
    sleep 1
    echo STARTED
   else
    echo FAILED TO WRITE PID
    exit 1
   fi
else
 echo SERVER DID NOT START
  exit 1
fi

2、在idea配置远程远程连接
(1)、配置远程连接
在这里插入图片描述
(2)、启动测试
在这里插入图片描述

需要注意的一点是:
需要保证服务器上运行的代码和本地代码的一致性,虽然在本地调试。但运行的代码依然是服务器上的代码,所以当修改完本地代码之后,需要及时修改服务器上的代码。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值