剛剛生產環境上部署了個新版本應用之後出現錯誤了,按照以往的調試方式就是 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 了。