Java 远程调试技术 |
JPDA(Java Platform Debugger Architecture)是 Java 平台调试体系结构的缩写,通过 JPDA,Java 开发人员可以方便灵活的搭建 Java 调试程序。关于 JPDA 的更多说明请参见:Oracle JPDA 指南。
通过 JPDA,SuperMap iServer 服务器可以开启调试模式,方便 iServer DSSE 扩展程序的调试。
设置 JVM 启动参数如下:
-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=*:49812
-Xdebug 表示让 JVM 运行在 DEBUG 模式下,-Xrunjdwp 通知 JVM 使用 JDWP(java debug write protocol)来运行调试环境,Xrunjdwp 的子参数如下:
transport:调试数据的传送方式,推荐使用 dt_socket,指使用 SOCKET 模式,适用于所有平台。
server:是否支持在 server 模式的 VM 中,这里为 y,iServer 即为 server 模式的 VM。
suspend:是否在调试客户端连接后,再执行 JVM。这里为 y,iServer 等调试客户端连接后,再执行。
address:客户端用来连接调试服务器的端口号,这里为49812。
运行在 Tomcat 容器中时(iServer 的默认运行方式),可修改 catalina.bat/sh,在最前面增加 JAVA_OPTS 的设置如下:
Windows 平台(catalina.bat):
set JAVA_OPTS=%JAVA_OPTS% -Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=*:49812
Linux 平台(catalina.sh):
JAVA_OPTS="$JAVA_OPTS -Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=*:49812"
在部署好 DSSE 扩展应用(这里以 GoogleMapsProvider 示范工程为例)后,运行 startup.bat/sh,等待调试器连接,如下图,在第二步设置的调试器连接后会继续启动。
在 Eclipse 中打开 DSSE 扩展应用,这里以扩展实现 GoogleMapsProvider 示范工程为例,右键单击工程,选择 Debug As>Debug Configuration:
在弹出对话框中找到“Remote Java Application”,右键单击选择“New”创建调试配置,如下图:
填写 Host 为第一步 iServer 所在的服务器 IP,端口为第一步中设置的address,即调试服务器的端口号,如下图:
单击“Apply”保存配置,单击“Debug”,就可以下断点进行调试了。