idea之debug调试服务器springboot项目
线上代码需与本地一样,记得要开放服务器port(防火墙作祟)
一、编写启动jar项目的shell脚本
#!/bin/sh
# 定义变量
JAR_NAME="$2.jar"
# 监听端口
ADD_PORT="$3"
# 该方法会重新启动程序
debug() {
# 查看pid,先杀掉,再运行jar
pid=$(ps -ef | grep $JAR_NAME | grep -v grep | awk '{print $2}')
# 设置默认监听端口
if [ -z $ADD_PORT ]; then
ADD_PORT="51135"
echo "......default Listen on port for DEBUG:${ADD_PORT}"
fi
# -z 表示为空
if [ ! -z $pid ]; then
kill -9 $pid
echo ""
echo "......kill -9 ${pid}....."
nohup java -agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=$ADD_PORT -Dloader.path=lib/ -jar $JAR_NAME >debugOut.log 2>&1 &
pid=$(ps -ef | grep $JAR_NAME | grep -v grep | awk '{print $2}')
echo ""
echo "debug Service ${JAR_NAME} is starting!newPid:${pid}, Listen on port:${ADD_PORT}"
echo "......debug restart: success......"
echo ""
else
nohup java -agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=$ADD_PORT -Dloader.path=lib/ -jar $JAR_NAME >debugOut.log 2>&1 &
pid=$(ps -ef | grep $JAR_NAME | grep -v grep | awk '{print $2}')
echo ""
echo "debug Service ${JAR_NAME} is starting!pid:${pid}, address:${ADD_PORT}"
echo "......debug Start: success......"
echo ""
fi
}
# 根据输入参数执行对应方法
case "$1" in
"debug")
debug
;;
esac
二、idea配置连接
Debugger mode : 选择 Attach to remote JVM
Host:你自己服务器的IP;
Port:监听端口,不要与程序的port相同
Command line arguments for remote JVM: 根据自己安装的jdk版本选择
Use module classPath:一般idea会自动选择为你的项目名称
三、测试
1、使用工具:网络调试助手、配合postman测试接口也阔以
网络调试助手下载地址 密码: mkd7
Netty服务嘞
2、Linux运行jar项目
[root@kong demo]# ls
demo_logs lib demo-1.2.jar start.sh
[root@kong demo]# sh start.sh debug demo-1.2
......default Listen on port for DEBUG:51135
debug Service demo-1.2.jar is starting!pid:23084, address:51135
......debug Start: success......
[root@kong demo]#
或
[root@kong dust]# sh start.sh debug demo-1.2 12364
......kill -9 23084......
debug Service demo-1.2.28.jar is starting!newPid:23234, Listen on port:12364
......debug restart: success......
[root@kong dust]#
3、工具与idea 测试
作为一名小猿你还用Windows吗,那就…,用不起mac的wo,使用deepin也贼香!!!!!!!!