工作这些年,经常会出现这样的情况,程序运行在本机是正常的,但是放到服务器上就出现各种bug,且服务器通用都是linux服务器,不方便调试,很难排查问题,这时候就需要

用到Eclipse的远程调试功能。说来惭愧,博主也是最近才知道这个功能,因此整理出这个帖子,以供大家分享。

何谓远程调试,就是我们把打包后的代码部署到服务器上之后,使用本地开发环境连接到服务器部署环境,以这样的方式调试。
下面说一下方法吧:

环境:Eclipse、Linux服务器下tomcat环境,做远程调试并不需要其他特殊插件

1、配置Linux服务器下Tomcat/bin/catalina.sh

在第一行增加代码:
CATALINA_OPTS="-server -Xdebug -Xnoagent -Djava.compiler=NONE -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=8899"
其中8899即为我们远程调试的端口,后面会用到。另外,该命令不可手工换行(博客显示的时候可能会被换行,实际配置的时候请注意)。


参数说明:
-Xdebug                                    : 启用调试模式
-Xrunjdwp<sub-options>      :加载JVM的JPDA参考实现库
transport=dt_socket               :Socket连接,可选dt_shmem 通过共享内存的方式连接到调试服务器
address=8000                        :调试服务器监听的端口
server=y                                    : 是否是服务器端,n为客户端
suspend=n                              : 启动过程是否加载暂停,y为启动时暂停,方便调试启动过程

(

Window中修改 catalina.bat文件,添加:
Set  "CATALINA_OPTS=-Xdebug  -Xrunjdwp:transport=dt_socket,address=8899,server=y,suspend=n"

)

2、启动tomcat,查看tomcat是否启动成功

如果启动成功,tomcat日志文件(catalina.out)中会有如下输出:
Command line argument: -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=8899


3、配置Eclipse

点击Eclipse上面的debug图标,选择Debug Configurations,打开窗口找到Remote Java Application,如下图:


创建一个远程调试,按下图配置,然后点击“Debug”


4、验证

我们打开源码项目中的任意需要调试的代码,像普通本地debug一样设置断点,然后对服务器部署的项目发起请求。
如下图所示,则表示已经成功。


点击上面圈起来的图标(Disconnect)即可断开Debug模式。
断开Debug模式后,可以随时再开启Debug模式,如以下操作:


5、注意事项

远程debug要保证本地代码和服务器代码一直,否则调试结果不一致
端口号必须是可以访问的端口
GitHub 加速计划 / li / linux-dash
10.39 K
1.2 K
下载
A beautiful web dashboard for Linux
最近提交(Master分支:2 个月前 )
186a802e added ecosystem file for PM2 4 年前
5def40a3 Add host customization support for the NodeJS version 4 年前
Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐