远程debug调试

1、背景

测试验证过程中我们肯定都遇到过线上问题本地怎么都无法复现的经历,而这一类问题往往是需要我们通过经验尝试性的修复,过程也比较痛苦且低效,没办法快速定位到问题原因。此时可以尝试使用远程debug将线上部署程序像本地调试一样验证问题

2、idea 中新建 debug 调试

理解内容:执行 java -agentlib:jdwp=help  查看帮助信息

a、参数含义:-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=8000

-agentlib:<libname>[=<选项>] 加载指定的本机代理程序库


suspend:在启动时是否就等待,表示程序一启动就停下,等待远程调试 socket 和它建立连接。

transport:传输规范,用 JDWP 调试程序一般叫做:dt_socket。

address:调试地址。

server:是否监听调试器,需要改成 y,要监听调试器。

launch:当事件发生时运行调试器

onthrow:抛出异常时

onuncaught:没有捕获异常时

timeout:监听超时时间

JDWP:Java Debug Wire Protocol 缩写,定义了调试器(debugger)和 Java 虚拟机(target vm)之间的通信协议


JDWP协议规范文档 https://docs.oracle.com/javase/8/docs/technotes/guides/jpda/jdwp-spec.html

3、服务器 JVM 启动参数中添加 -agentlib

a、定义环境变量:

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

b、jar 启动

java $JPDA_OPTS -jar test.jar

c、war 启动

JAVA_OPTS="$JAVA_OPTS $JPDA_OPTS"

4、启动本地远程调试就可以调试服务端运行代码了,实时的查看每一步执行的结果

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值