Idea之Java代码Remote JVM Debug
1、适用场景
在公司中,java代码开发完成之后,一般都会部署到linux服务器上,以供公司客户进行使用。但是作为开发人员,尤其是一名新员工,了解公司产品源代码中的业务逻辑算的上是最重要的,代码量一般都是数万行,此时就需要进行Debug调试。由于公司产品环境搭建相当复杂,并且公司得前端页面直接绑定的也是远程服务器,此时就需要Remote JVM Debug来进行远程调试,来帮助我们理解代码。
2、具体步骤
(1)首先是要在jar启动上加入如下参数。-agentlib:jdwq代表启动了远程调试功能。
transport=dt_socket
:指定使用套接字传输方式进行调试。server=y
:将 JVM 设置为调试服务器模式,等待调试器连接。suspend=n
:在启动时不要暂停 JVM,即不等待调试器连接。address=0.0.0.0:40001
:指定调试器连接的地址和端口。在这个例子中,JVM 将监听所有网络接口上的 40001 端口。
-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=0.0.0.0:40001
(2)本地操作首先是idea中配置远程debug连接,如下图所示。需要设置你的服务器地址以及端口号即可。
![Snipaste_2023-08-12_15-42-15](https://i-blog.csdnimg.cn/blog_migrate/709decfeace1ba892f37467f6d413f3f.png)
![Snipaste_2023-08-12_15-47-05](https://i-blog.csdnimg.cn/blog_migrate/d59471f789b089c7ce2cb61da196fedb.png)
(3)本地代码上设置断点。本地调试器设置的断点实际上是对远程 JVM 的断点请求。当远程 JVM 运行到设置的断点位置时,它会通过与远程调试器建立的连接通知远程调试器,并由远程调试器将此消息传递给本地调试器。本地调试器收到断点触发的通知后,就会进入本地调试模式,允许你在本地进行调试操作。在本地代码上设置断点,切记一定要设置上断点的条件,即右击断点进行设置。条件断点,顾名思义就是只有满足此条件的请求,才会被进行拦截,进入debug,断点条件最好设置成唯一ID。如果未设置断点条件,那么就会拦截所有请求,直接影响到服务器为其他客户提供请求服务。
(4)发送请求,然后进入本机开始debug。
兄弟萌,累了休息一下也无妨。人生本来就是走走停停,只要一直在路上就好!!!