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