使用偵錯程式工具

開始使用

開發工具中包含了一個完整的原始碼級偵錯程式,支援斷點、單步除錯以及變數檢視。

When you open the debugger tab, you should see the source for the main entry-point for your app loaded in the debugger.

In order to browse around more of your application sources, click Libraries (top right) or use the hot key command ⌘ + P / ctrl + P. This will open the libraries window and allow you to search for other source files.

Screenshot of the debugger tab

設定斷點

可以點選原始碼區左邊空白(行數展示欄內)來設定斷點。單擊一次就設定了一個斷點,並且也會在 Breakpoints 區域展示出來。再次單擊則取消斷點。

呼叫棧和變數區

當應用執行到某個斷點時,就會在此處暫停,偵錯程式也會在原始碼區顯示當前暫停的位置。此外,Call stackVariables 區域也會顯示暫停時的呼叫棧以及選中幀的本地變數。在 Call stack 選擇其他的幀可以改變變數區的內容。

Variables 內,可以透過點選物件展開檢視其內容來檢視獨立的物件。指標停在 Variables 區域的物件上時會呼叫該物件的 toString() 方法並展示結果。

單步除錯原始碼

三個單步除錯按鈕在暫停後會變為可用狀態。

  • 使用 Step in 來進入被呼叫的方法,在遇到方法內的第一行可執行程式碼時結束。

  • 使用 Step over 直接執行某個方法呼叫而不進入內部;該按鈕在當前方法內按行執行。

  • 使用 Step out 來跳出當前方法,這種方式會直接執行完所有當前方法內的陳述式。

另外,Resume 按鈕的作用是恢復應用的正常執行。

命令列輸出

執行中應用的命令列輸出(stdout 和 stderr)會在命令列中輸出,該區域在原始碼區下方。Logging view 中也可以看到相應輸出。

例外跳出

請在偵錯程式檢視頂部切換 Ignore 下拉選單來適配例外跳出的行為。

Break on unhandled exceptions:只在斷點被認為應用內程式碼無法捕獲時暫停執行。 Breaking on all exceptions:無論是否被捕獲都會暫停執行。

已知問題

當 Flutter 應用執行熱重載時,使用者的斷點會被清除。

其他資源

存取 Debugging 頁面來獲取更多關於偵錯程式和效能分析的資訊。