debug模式除錯技巧
斷點管理視窗
選單欄方式
run -> view breakpoints
actions方式
雙擊shift調出actions視窗,輸入view breakpoints即可開啟
任意斷點處滑鼠右鍵
選擇more即可開啟管理視窗
快捷鍵
ctrl + shift + f8
操作面板
除錯按鈕
show execution point
回到當前啟用的斷點處。效果:若你滑鼠現在在別的頁面/別的類上面,點選它快速「歸位」
step over
也叫單步除錯,一行一行往下走,若這一行是方法也不會進入裡面去。這個應該是平時使用得最多的按鈕了,沒有之一。所以,建議記住你的快捷鍵來提高效率哈
step into
進入方法體內部。這裡的方法指的你自定義的方法or三方庫的方法,不會進入到jdk官方的方法裡(如上面的system.out.println()這種它是不會進去的)
force step into強制步入
能進入任何方法,包括jdk的。一般檢視底層原始碼才會用到它
step out步出
它是搭配(force) step into一起使用的,當通過step into進入到方法體內部想出來時,一般有兩種方案:單步除錯慢慢出來,另乙個就是step out(推薦)
drop frame
回到當前方法的呼叫處,同時上下文內所有的變數的值也回到那個時候。該按鈕能夠點選的前提條件是:當前所處的方法有上級方法,如果你是main方法裡,那麼按鈕就是灰色嘍
run to cursor
你想要**在**停一下,就把游標放在哪就成。這個功能實在太好用了,大大緩解了密密麻麻的斷點,強烈推薦
evaluate expression
表示式計算器,你可以在這裡執行任何合法的表示式
方法呼叫棧
顯示當前方法(位於棧頂)所經過的所有方法。
說明:點選右上角的小漏斗圖示可以不顯示類庫的方法,只顯示你自己寫的方法,方便除錯
變數區variables
watches變數跟蹤
有的時候變數很多,而只需要重點關注某幾個變數,就可以使用watches。
為何除錯視窗沒自動開啟?
明明斷點啟用了(程式暫停了),但是那個「操作面板」並沒有出來,怎麼破?
多執行緒除錯
多執行緒程式的好處固然不用多說,但總所周知它除錯起來是比較困難的,比如這段:
這個時候如果你想研究await()方法的實現,需要具備的前提條件是多個執行緒進入,因此需要hold住多個執行緒。若只是在await()這一行打個普通的行斷點,那結果是這樣子的:
所有執行緒都是running狀態,顯示這是不可能的,因為總共只有3個另外,拿完了其它的都得等待才對,所以這個根本就不是真實的執行場景,也就不可能跟蹤到await()方法裡面去**其實現。
為了模擬出這種場景進行除錯,就對斷點阻塞條件設定為這樣
再次執行程式,執行緒情況如下:
主動丟擲異常
需求場景:你寫了乙個全域性異常元件,現在想測試它生效情況如何,那麼時候你就需要主動丟擲這種異常,一般的做法是形如這樣
使用場景
知曉了異常斷點的作用和觸發條件,使用場景就有啦。比如當你的程式丟擲了乙個異常,但是一時半會你並不知道是哪行**引起的,這個時候通過增加異常斷點的方式可以實現迅速的問題定位。
分支主題 10
idea把斷點分為四大型別
line breakpoint(行斷點):圖中紅色小圓圈。顧名思義,在指定**行設定斷點
field watchpoint(屬性斷點):圖中紅色小眼睛。打在類的屬性(static or 非static)上的斷點,作用是在該屬性 讀取和寫入時啟用
method breakpoint(方法斷點):圖中紅色小菱形。標記在方法簽名的那一行,在該方法執行的入口/出口處被啟用
exception breakpoint(異常斷點):紅色小閃電。這是乙個特殊但很好用的斷點,當程式丟擲 指定異常時會啟用異常斷點。和其它斷點不同,異常斷點是專案 全域性的,它不需要打在具體某一行上
**:
軟體除錯 Debug
軟體除錯是在進行了成功的測試之後才開始的工作。它與軟體測試不同,除錯的任務是進一步診斷和改正程式中潛在的錯誤。除錯的主要任務有兩項 一項是確定程式中錯誤的確切性質和位置,二是對程式進行修改 排除錯誤。除錯的步驟如下 1 從錯誤的外部表現形式入手,確定程式中出錯位置 2 藥酒有關部分的程式,找出錯誤的...
前端除錯Debug
前端頁面設定dubug 首先呢,在觸發檔案中新增debugger 然後訪問頁面觸發這個js檔案中的函式方法,此時頁面會變灰,並且在f12的彈出框中,會預設開啟sources資源 這個時候,你可以看右邊的提示資訊 f10是一步一步執行,f8是一下執行完成 日常的除錯過程,可能會需要。console.l...
軟體除錯 Debug
軟體除錯是在進行了成功的測試之後才開始的工作。它與軟體測試不同,除錯的任務是進一步診斷和改正程式中潛在的錯誤。除錯的主要任務有兩項 一項是確定程式中錯誤的確切性質和位置,二是對程式進行修改 排除錯誤。除錯的步驟如下 1 從錯誤的外部表現形式入手,確定程式中出錯位置 2 藥酒有關部分的程式,找出錯誤的...