1、服务端设置
cat start.sh
#!/bin/bash
echo "i will start the program!"
java -jar -Xdebug -Xrunjdwp:transport=dt_socket,server=y,address=9999 xxxxx-SNAPSHOT.jar --server.port=10991
echo "start success"
2、开发工具设置
3、然后,确保本地代码和远程部署代码一致,选择刚才远程保存的民初,点击 debug然后本地加断点,远程访问服务端,这样服务端就通过socket调用到本地端,然后可以进行debug调试
原理:
Java远程调试的原理是两个VM之间通过debug协议进行通信,然后以达到远程调试的目的,两者之间可以通过socket进行通信;
客户端(idea 、eclipse 等)之所以可以进行调试,是由于客户端 和 服务端(程序端)进行了 socket 通信,通信过程如下:
1、先建立起了 socket 连接
2、将断点位置创建了断点事件通过 JDI 接口传给了 服务端(程序端)的 VM,VM 调用 suspend 将 VM 挂起
3、VM 挂起之后将客户端需要获取的 VM 信息返回给客户端,返回之后 VM resume 恢复其运行状态
4、客户端获取到 VM 返回的信息之后可以通过不同的方式展示给客户;