远程调试可以避免开发人员只能通过日志定位问题,让开发人员直接通过代码进行调试。
情景介绍
本地机器通过IDea/Eclipse开发工具远程调试服务器上的代码。
远程调试基本条件
1. Tomcat开启远程调试参数
- Linux:在catalina.sh中添加内容
CATALINA_OPTS="-Xdebug -Xrunjdwp:transport=dt_socket,address=8000,server=y,suspend=n"
- Windows:在catalina.bat中添加内容
Set "CATALINA_OPTS=-Xdebug -Xrunjdwp:transport=dt_socket,address=8000,server=y,suspend=n"
- 参数说明:
-Xdebug :启用调试模式
-Xrunjdwp<sub-options> : 加载JVM的JPDA参考实现库
transport=dt_socket :Socket连接,可选dt_shmem 通过共享内存的方式连接到调试服务器
address=8000 : 调试服务器监听的端口
server=y : 是否是服务器端,n为客户端
suspend=n : 启动过程是否加载暂停,y为启动时暂停,方便调试启动过程
修改好参数后,重启服务。
2. Idea工具调试设置
- 菜单:Run->Edit Configurations…
- 添加Remote,设置参数Host为服务器IP地址,Port:8000( PS:要和服务器上一致)
- 将需要调试的代码打上断点
点击Debug按钮,在服务器上的应用进行操作,等待进入调试模式
3. Eclipse工具调试设置
- 菜单:Run->Debug Configurations…
- 双击Remote Java Application,新增一个application,设置参数Host为服务器IP地址,Port:8000( PS:port要和服务器上一致,如果当前工作空间没有web项目,可能不会显示Remote Java Application选项)
- 点击Debug按钮,在服务器上的应用进行操作,等待进入调试模式
4. 灵活用法
比如生产环境比较特殊,无法直接通过外网访问,可以在内网环境直接安装一个开发工具,然后复制某一个编译文件或者jar,含有需要调试的代码片段即可通过该方法进行远程调试,很方面。
eclipse可以安装反编译插件