刚刚生产环境上部署了个新版本应用之后出现错误了,按照以往的调试方式就是 log 输出,看看那个地方出的问题,这次终于觉得难以忍受了,决定试试 Tomcat 的远程调试效果咋样。
网上搜索了一圈之后基本有了谱,于是动手尝试。
环境说明
- 生产环境:Tomcat 8.0.20
- 本地开发环境:IDEA 14
远程服务器配置
Tomcat 启动方式:
./catalina.sh jpda start
注意:这个会默认将 jpda 的 address 设置为 “localhost:8000”,所以还需要编辑 catalina.sh 在其顶部增加一行:
export JPDA_ADDRESS=8000
也就是去掉默认监听的 localhost 地址,使得可以在其它开发机器上调试。
另外还需要注意的就是别忘记在防火墙上开放 8000 这个端口,当然,这个端口也可以根据需要自己修改为其它数字。
开发环境上 IDEA 设置
这个设置就比较简单了:
然后点击“调试”按钮,如果输出如下文字即表示成功:
Connected to the target VM, address: 'www.xxoo.com:8000', transport: 'socket'
调试过程说明
显然调试过程中 IDEA 上的项目应该是于服务器上版本一致的才行——否则断点往哪儿打啊,不过经常会出现的问题是调试过程中的代码行无法正确匹配,也就是服务器上应该已经进入某行或某方法了,但是 IDEA 上无法正确定位,这个不知道是谁的问题,不过我们能看到那些变量的值已经足够了不是,起码比 log 输出要省很多事了。
最后
调试完毕后可以按照正常方式重启 Tomcat 就 ok 了。