gradle 项目启动时可以使用自带的 jetty 执行 jettyRun,但是 jetty 却没有自带 debug,这就需要利用 eclipse 的远程调试功能。
首先新建一个远程调试,并设置远程地址及端口号,由于我们希望调试的是本机项目,那么地址就是 localhost,不过端口号并不是启动的项目端口号,而是另外一个约定好的端口号,这里假设是 8088:
接下来右键 jettyRun 设置 jettyRun 的 jvm 启动参数:
参数设置完毕,先执行 jettyRun,再执行 debug,就可以进行断点调试了,不过 debug 时,访问的还是 jettyRun 启动的端口号,而不是 8088。
以下两种参数设置都可以,这两者的区别是,suspend=n 时,jettyRun 会正常执行,不依赖 debug 的执行,而 suspend=y 时,jettyRun 会阻塞,等待 debug 开始执行以后,才会继续执行。
-Xdebug -Xrunjdwp:transport=dt_socket,address=8088,server=y,suspend=n
-Xdebug -Xrunjdwp:transport=dt_socket,address=8088,server=y,suspend=y
从 jettyRun 和远程调试的参数设置上,可以大概了解到它们之间的关联。
首先 jettyRun 开始执行,这时候会占用两个端口号,一个是项目启动的端口号,比如设置的是 8080,另一个是为远程调试准备的端口号 8088,不过这个端口号并不是为了 debug 时从浏览器访问项目的时候用,而是为了让远程调试能够找到待调试的项目。
因此,这个 8088 端口号只是作为一个连接标志,真正 debug 时,在浏览器中输入的还是 8080 端口号,否则是访问不到项目的。
欢迎来到这里!
我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。
注册 关于