ndp平台IntelliJ IDEA实现java远程调试

远程调试

对开发人员来说,快速准确地定位bug十分重要。在预发布或者测试环境提测时,经常会出现难以用日志去定位的异常情况。这里介绍一种远程调试的方法,能让我们在本地就能很方便地调试测试环境中运行的代码。

原理介绍

远程调试的核心是JPDA(Java Platform Debugger Architecture)框架,基本原理是监控远程虚拟机上应用的运行信息,并通过通信协议传输到本地,然后利用本地IDE调试远程服务器的应用。详细原理请自行搜索相关文档。

远程服务器设置

需要在jvm启动时设置相关参数,由于我们是在ndp平台上部署相关服务,需要在平台的发布配置-修改实例-jvmExtra中增加相关参数:

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

其中address参数是我们设置的远程调试端口。

端口转发

由于测试服务器必须通过跳板机连接,所以需要配置端口转发来访问远程调试的端口。

本地IDEA IDE设置

Intellij Idea的调试配置中增加Remote实例,Host和Port设置为远程调试的端口,如下所示

使用方法

通过ndp部署完服务之后,本地打开远程调试 当出现

Connected to the target VM, address: '127.0.0.1:20163', transport: 'socket

表示连接成功,就可以在本地打断点调试测试环境的服务了。

注意事项

  1. 本地代码的修改不会改变远程服务的状态。一定要保证测试环境部署的代码和本地代码一致。
  2. 和本地调试一样,进入断点后测试环境服务就阻塞了。

本文来自网易实践者社区,经作者李鹏飞授权发布。