Debug模式除錯技巧

2022-08-12 14:21:13 字數 2642 閱讀 3253

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 藥酒有關部分的程式,找出錯誤的...