关于远程调试
基本原理
本机和远程主机的两个VM之间使用 Debug 协议通过 Socket 通信,传递调试指令和调试信息。
被调试程序的远程虚拟机:作为 Debug 服务端,监听 Debug 调试指令。
示例
以在idea中配置Resin远程调试为例进行说明。
- 服务端Resin开启调试模式
进入resin配置文件:resin/config/resin.properties 修改jvm_args
jvm_args : -Xdebug -Xrunjdwp:transport=dt_socket,address=9081,server=y,suspend=n
参数 | 说明 |
---|---|
-XDebug | 启用调试。 |
-Xnoagent | 禁用默认sun.tools.debug调试器。 |
-Djava.compiler=NONE | 禁止 JIT 编译器的加载。 |
-Xrunjdwp | 加载JDWP的JPDA参考执行实例。 |
transport | 用于在调试程序和 VM 使用的进程之间通讯。 |
dt_socket | 套接字传输。 |
dt_shmem | 共享内存传输,仅限于 Windows。 |
server=y/n | VM 是否需要作为调试服务器执行。 |
address=3999 | 调试服务器的端口号,客户端用来连接服务器的端口号。 |
suspend=y/n | 是否在调试客户端建立连接之后启动 VM 。 |
- idea配置
按照下图依次配置:
注意事项
- 远程连接失败
确认端口是否可通
- 无法进入断点
本地需要与服务端保持代码一致