要让远程服务器运行的代码支持远程调试,则启动的时候必须加上特定的JVM参数,这些参数是:
-Xdebug -Xrunjdwp:transport=dt_socket,suspend=n,server=y,address=${debug_port}
例如
java -jar -Xdebug -Xrunjdwp:transport=dt_socket,suspend=n,server=y,address=6666 demo-0.0.1.jar --server.port=9090
打开Intellij IDEA,在顶部靠右的地方选择”Edit Configurations…”,进去之后点击+号,选择”Remote”,
按照下图的只是填写红框内的内容,其中Name填写名称,
这里为halo-remote,host为远程代码运行的机器的ip/hostname,
port为上一步指定的port,本例是6666。然后点击Apply,最后点击OK即可.
现在在上一步选择”Edit Configurations…”的下拉框的位置选择上一步创建的remote webserver,然后点击右边的debug按钮(长的像臭虫那个),看控制台日志,如果出现类似“Connected to the target VM, address: ‘xx.xx.xx.xx:5555’, transport: ‘socket’”的字样,就表示连接成功过了。我这里实际显示的内容如下:
Connected to the target VM, address: 'localhost:6666', transport: 'socket'
远程debug模式已经开启,现在可以在需要调试的代码中打断点了,比如:
备注:需要注意的是,用于远程debug的代码必须与远程部署的代码完全一致,不能发生任何的修改,否则打上的断点将无法命中,切记切记。