时间:2020-10-08来源:www.pcxitongcheng.com作者:电脑系统城
Remote Debug 综述
当我们的后台项目部署到服务器上时,由于环境和本地不同,有时候也会有一些奇奇怪怪的问题出现。只依赖服务器上的日志来诊断可能太不灵活,这时就需要我们进行远程调试。
在开始我们的步骤前,先确认一点:
我们现在是希望能够在本地远程调试服务器上的程序,也就是说:
而且还有一点我们需要注意,就是在调试远程服务器上的代码时,一定要保证 远程服务器 上的代码和 本地 代码一致,不然就失去debug效果了。
First Step 本地配置远程服务 在本地,打开我们的idea,在运行窗口上点击 Edit Configurations…
会看到新跳出来一个窗口,点击左上角 ‘+' 号,选择 Remote
填入相关信息
这样就算是做好了我们本地的远程debug配置。
这里补充一个小tip:
这里设置的8002端口是监听端口,读者也可以修改为自己想要的端口。
但是要注意,监听端口和启动端口必须不同。
也就是服务器上项目启动的端口,要和你现在设置的这个监听端口不一样。
先别急着把这个界面关掉,我们把这一段内容复制下来:
?1 | -agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address= 8002 |
Second Step 服务器以远程监听方式启动
打开我们的Xshell(或其他SSH工具)连接上我们的远程服务器。
启动时,我们将过去的java -jar xxx.jar
命令给替换成:
1 | java -jar -agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address= 8002 xxx.jar |
但如果我们的远程服务器是阿里云、腾讯云等云服务商的云服务器,我们可能需要像下面这样改:
指定我们开放的ip,确保不会被默认设置为127.0.0.1:8002导致外部无法访问进来。
1 | java -jar -agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address= 0.0 . 0.0 : 8002 xxx.jar |
回车启动,会看到下面的字样,就说明成功监听了:
?1 | Listening for transport dt_socket at address: 8002 |
Third Step 在本地调试
点击debug
可以看到控制台中显示出了以下字样,说明连接成功。
?1 | Connected to the target VM, address: '{ip}:8002' , transport: 'socket' |
然后就可以像调试本地程序一样打断点调试了~
2023-03-18
如何使用正则表达式保留部分内容的替换功能2023-03-18
gulp-font-spider实现中文字体包压缩实践2023-03-18
ChatGPT在前端领域的初步探索最近闲来无事,在自己的小程序里面集成了一个小视频的接口,但是由于小程序对于播放视频的限制,只能用来做一个demo刷视频了,没办法上线体验。小程序播放视频限制最多10个,超出可能...
2023-03-18
Vue.js、React和Angular对比 以下是Vue.js的代码示例: 以下是React的代码示例: 以下是Angular的代码示例:...
2023-03-18