跳到主內容

使用偵錯程式

如何使用 DevTools 的原始碼級偵錯程式。

入門

#

DevTools 包含一個完整的原始碼級偵錯程式,支援斷點、單步執行和變數檢查。

當你開啟偵錯程式選項卡時,應該能看到應用程式主入口點的原始碼已載入到偵錯程式中。

若要瀏覽應用程式的其他原始碼,請點選(右上角)或按 Ctrl / Cmd + P。這將開啟庫視窗,允許你搜索其他原始檔。

Screenshot of the debugger tab

設定斷點

#

要設定斷點,請點選原始碼區域左側的頁邊距(行號標尺)。點選一次即可設定斷點,該斷點也應顯示在左側的斷點(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)時,使用者設定的斷點會被清除。

其他資源

#

有關除錯和效能分析的更多資訊,請參閱 除錯 頁面。