配置远程debug_以jar包和idea为例

  1. 在平常的项目发布后,线上出现问题,首现通过报错和日志查看问题,如果报错日志看不出问题时可以用远程debug的方式进行。
  2. 首先要再项目发布的时候进行配置。

 发布脚本如下:

#!/bin/bash
source /etc/profile
project_jar=ipos-1.0-SNAPSHOT.jar
echo $project_jar
ps -ef | grep $project_jar |grep -v grep |awk '{print $2}' | xargs kill -9
sleep 5
echo '停止jar应用运行'
cd /usr/local/ipos/build/libs/
nohup java -jar -server -Xms512M -Xmx512M -XX:+UseG1GC -XX:+PrintGCDateStamps -XX:+PrintGCDetails -Xloggc:/usr/local/ipos-gc.log -Dspring.profiles.active=dev -Xdebug  -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=8090 $project_jar  >/dev/null 2>&1 &
echo '启动jar应用完成'

我们要进行简单的配置:

-Xdebug  -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=8090

各参数解释:
-Xdebug:通知JVM工作在调试模式下
-Xrunjdwp:通知JVM使用(java debug wire protocol)来运行调试环境。参数同时有一系列的调试选项:
指定了调试数据的传送方式,dt_socket是指用SOCKET模式,另外dt_shmem指用共享内存方式,其中dt_shmem只适用于窗口平台.server  参数是指是否支持在服务器模式的虚拟机中。
onthrow:指明当产生该类型的异常时,JVM就会中断下来,进行调式该参数任选。
<code>release</code>:指明当JVM被中断下来时,执行的可执行程序该参数可选
<code>suspend</code><:指明:是否在调试客户端建立起来后,再执行 JVM。
onuncaught(= y或n)指明出现未捕获的异常后,是否中断JVM的执行。

在项目部署的机器上要开放8090端口。

发布项目

在idea中对应的项目启动进行配置:

 

 然后启动对应的项目。当出现如下内容表示启动链接成功。

 日志不会输出在控制台上,可以通过dedug查看项目中参数的传递请况。

至此远程debug调试就完成了。为了方便期间在项目发布脚本中就配置上,平时也不会影响正常的运行,在出现问题的时候只需要配置本地代码启动就可以了。

注意一定要保证本地和远程代码一样,不然可能会造成不可预估的损失。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值