程序員的工作內(nèi)容,除了大部分時間寫代碼之外,因為有不少的時間是用在調(diào)試代碼上。甚至說不是在調(diào)試代碼,就是即將調(diào)試代碼。 :)
今天我們來談談調(diào)試代碼的一些技巧,在使用IDE提供的debugger時一些快速定位問題的方式。
看到這里的朋友,不要馬上認為我標題黨,再往下看看,如果你還有一些更好用的技巧,歡迎留言。
下面進入正題。
1 多線程調(diào)試
開發(fā)過多線程應用的朋友應該有體會,有些時候,為了觀察多個線程間變量的不同狀態(tài),以及鎖的獲取等,就會想到在代碼里加個斷點debug一下。
在IDE里斷點停下來的時候,可以切換到另外的線程中,跑其他的代碼,不會互相影響。當然,這里是有個開關的,在Eclipse里默認開啟,
但是在IntelliJ IDEA里默認是沒有開啟的。也就是說如果你在IDEA里代碼里加斷點,雖然一個線程的斷了下來,但其他線程的已經(jīng)執(zhí)行過了。此處把線程的suspend設置成和Eclipse模式一樣之后,也可以開始多線程應用的調(diào)試。簡單設置可以直接在斷點處,將suspend改成Thread
一個線程斷下來之后,可以通過在線程窗口切換,到其它線程中繼續(xù)運行。
IntelliJ IDEA里在這兒切換
我們看到main線程和pool-1-thread-1這兩個線程都處于RUNNING狀態(tài),切換到任何一個都可以繼續(xù)運行。