Java远程调试
Java 远程调试:概念:JPDA(Java Platform Debugger Architecture)是Java平台调试体系结构的缩写,通过JPDA提供的API,开发人员可以方便灵活的搭建Java调试应用程序。JPDA 主要由三个部分组成:Java虚拟机工具接口(JVMTI),Java调试线协议(JDWP),以及Java调试接口(JDI)实战:第一步:让服务器支持远程...
·
Java 远程调试:
概念:
JPDA(Java Platform Debugger Architecture)是Java平台调试体系结构的缩写,通过JPDA提供的API,开发人员可以方便灵活的搭建Java调试应用程序。
JPDA 主要由三个部分组成:Java虚拟机工具接口(JVMTI),Java调试线协议(JDWP),以及Java调试接口(JDI)
实战:
第一步:让服务器支持远程调试:
jdk1.4以后:
服务器启动参数:-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=8899
说明:# -Xrunjdwp 通知JVM使用(java debug wire protocol)来运行调试环境。
transport 指定调试数据的传送方式,dt_socket表示使用socket模式
server 指定是否支持以server模式运行的JVM
suspend 指定是否在调试客户端建立起来后再启动JVM
address 指定客户端需要监听的端口
举例:java -agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=8899 -jar application.jar
jdk1.4
服务器启动参数:-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=8899
说明:# -Xdebug 通知JVM开启debug模式。
举例:java -Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=8899 -jar application.jar
第二步:在idea中创建一个Remote并启动。
注意:本地的代码必须和远程服务器上的代码一致,否则可能会导致无法进入断点。若不能保持一致,则最起码应该保证要调试的类是一致的。
步骤:Idea中创建一个Remote,并指定服务器的地址和-Xrunjdwp中设置的address,然后启动Remote,在需要调试的地方打上断点,即可调试。
注意:如果idea没有连接到远程服务器,则可能是由于端口不合适造成的。故端口建议使用8788附近的端口(8788、8789、8899等),9788端口不可用(原因未查,可能端口有范围限制)。
Tip:
debug时,在Variables窗口下,右键选择" Evaluate Expression...",可以打开一个窗口,在该窗口的输入框中输入我们想要调试的代码(可以是变量,也可以是语句),点击Evaluate按钮即可看到此时该代码在JVM中执行的结果。
更多推荐
已为社区贡献6条内容
所有评论(0)