你可能不知道的調試技巧
1.遠程調試
調試作為開發人員的必備技能,我們幾乎每天都會用到。但是大多數時候,我們僅僅是在本地計算機上進行程序的調試而已。有些時候,本地調試是無法滿足調試要求的,比如:由于本地計算機環境和服務器環境的軟硬件差異,導致本地計算機無法復現問題,因而也無從調試定位問題。此時,我們可能會腦洞大開,是否可以直接調試部署在服務器上的應用程序呢?答案是肯定的,你可以在服務器上面安裝相應的開發調試工具,然后直接調試。此外,你也可以直接使用本地開發工具遠程調試服務器上部署的應用程序。
下面簡單介紹下如何在我們常用的WebSphere(下文以was簡稱)中間件上,進行遠程調試:
1.在was上設置遠程調試服務(以下所示均為在was6.1.0.43上的操作):
登錄was控制臺,服務器->應用程序服務器->選擇所要開啟調試服務的server->調試服務,勾選”在服務啟動時啟用服務”,并重啟服務器。
was設置
2.在本機IDE(此處演示的為Eclipse,Version: Helios Service Release 2,Build id: 20110218-0911)上進行設置:
eclipse設置
3.在本機IDE(此處演示的為Eclipse,Version: Helios Service Release 2,Build id: 20110218-0911)上右鍵‘Debug As’選擇剛才2中新建的調試設置,坐等服務器上斷點被觸發,即可進入遠程調試,如本地調試般順滑。
更多信息可參考:使用Eclipse遠程調試Java應用程序
2.前端 hack
服務器上經常容易出現各種本機環境所無法呈現的問題。真是生命不息,填坑不止,愁煞猿也!很多時候,通過各種方法技巧定位到了問題所在,也找到了解決方案本機驗證通過,但是更重要的是需要在服務器上面進行驗證。作為運行中的服務器,一般是不允許被隨意中斷的,也不能輕易進行更新升級的。那么要如何不改變服務器而又可以進行服務器端的驗證呢?可以利用瀏覽器的調試功能(此方案僅在某些需要修改前臺js、jsp等代碼的情況下有效)。
比如:以下代碼情況下,若附件名含有中文則將導致保存的時候出現亂碼。
文件名未進行編碼
解決方案就是對fileNameDes進行兩次的encodeURIComponent編碼。但是此時在服務器不允許臨時升級的情況下,怎么驗證問題是否得到解決呢?對,這位童鞋說對了,可以利用瀏覽器的F12調試功能里面的監視,直接改變變量值(把methodPath變量設置為經過了兩次encodeURIComponent編碼后的值)來查看驗證最終的效果。在監視處添加如下代碼(產生的效果即和上傳部署***代碼效果一致):
- methodPath = mainPath + "method=getDown&id="+id+"&fileNameDes="+encodeURIComponent(encodeURIComponent(fileNameDes))+"&fileName="
調試修改變量值