对开发人员来说,快速准确地定位bug十分重要。在预发布或者测试环境提测时,经常会出现难以用日志去定位的异常情况。这里介绍一种远程调试的方法,能让我们在本地就能很方便地调试测试环境中运行的代码。
远程调试的核心是JPDA(Java Platform Debugger Architecture)框架,基本原理是监控远程虚拟机上应用的运行信息,并通过通信协议传输到本地,然后利用本地IDE调试远程服务器的应用。详细原理请自行搜索相关文档。
需要在jvm启动时设置相关参数,由于我们是在ndp平台上部署相关服务,需要在平台的发布配置-修改实例-jvmExtra中增加相关参数:
-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=30163
其中address参数是我们设置的远程调试端口。
由于测试服务器必须通过跳板机连接,所以需要配置端口转发来访问远程调试的端口。
Intellij Idea的调试配置中增加Remote实例,Host和Port设置为远程调试的端口,如下所示
通过ndp部署完服务之后,本地打开远程调试 ,当出现
Connected to the target VM, address: '127.0.0.1:20163', transport: 'socket
表示连接成功,就可以在本地打断点调试测试环境的服务了。
本文来自网易实践者社区,经作者李鹏飞授权发布。