远程debug调试

1、背景

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

2、idea 中新建 debug 调试

远程debug调试_第1张图片

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

远程debug调试_第2张图片

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

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


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、启动本地远程调试就可以调试服务端运行代码了,实时的查看每一步执行的结果

你可能感兴趣的:(工具类,#,JVM,服务器,网络,linux)