使用偵錯程式
如何使用 DevTools 的原始碼級偵錯程式。
入門
#DevTools 包含一個完整的原始碼級偵錯程式,支援斷點、單步執行和變數檢查。
當你開啟偵錯程式選項卡時,應該能看到應用程式主入口點的原始碼已載入到偵錯程式中。
若要瀏覽應用程式的其他原始碼,請點選庫(右上角)或按 Ctrl / Cmd + P。這將開啟庫視窗,允許你搜索其他原始檔。
設定斷點
#要設定斷點,請點選原始碼區域左側的頁邊距(行號標尺)。點選一次即可設定斷點,該斷點也應顯示在左側的斷點(Breakpoints)區域中。再次點選即可移除斷點。
呼叫棧和變數區域
#當應用程式遇到斷點時,它會在該處暫停,DevTools 偵錯程式會在原始碼區域顯示暫停的執行位置。此外,呼叫棧(Call stack)和 變數(Variables)區域會填充當前暫停隔離區(Isolate)的呼叫棧以及所選框架的區域性變數。在 呼叫棧 區域中選擇其他框架會更改變數的內容。
在 變數 區域內,你可以透過展開各個物件來檢查其欄位。將滑鼠懸停在 變數 區域的物件上,會呼叫該物件的 toString() 方法並顯示結果。
單步除錯原始碼
#暫停時,三個單步執行按鈕變為活動狀態。
- 使用步入(Step in)進入方法呼叫,並在該被呼叫方法的第一個可執行行停止。
- 使用步過(Step over)跳過方法呼叫;這會單步執行當前方法中的原始碼行。
- 使用步出(Step out)跳出當前方法,且不會在中間行停止。
此外,恢復(Resume)按鈕會繼續應用程式的常規執行。
控制檯輸出
#執行中應用的控制檯輸出(stdout 和 stderr)會顯示在原始碼區域下方的控制檯中。你也可以在 日誌檢視 中檢視輸出。
在異常處中斷
#要調整“在異常時停止”的行為,請切換偵錯程式檢視頂部的忽略(Ignore)下拉選單。
“僅在未捕獲異常時中斷”(Breaking on unhandled exceptions)僅在斷點被應用程式程式碼視為未捕獲時才暫停執行。“在所有異常處中斷”(Breaking on all exceptions)則無論斷點是否被應用程式程式碼捕獲,都會導致偵錯程式暫停。
已知問題
#對 Flutter 應用程式執行熱重啟(Hot restart)時,使用者設定的斷點會被清除。
其他資源
#有關除錯和效能分析的更多資訊,請參閱 除錯 頁面。