內容

偵錯 Dart 網頁應用程式

您可以使用 Dart IDEDart DevTools 和瀏覽器工具(例如 Chrome DevTools)來偵錯您的 Dart 網頁應用程式。

  • 若要偵錯應用程式的邏輯,請使用您的 IDE、Dart DevTools 或瀏覽器工具。Dart DevTools 在檢查和自動重新載入 Dart 程式碼方面,比瀏覽器工具提供更好的支援。
  • 若要偵錯應用程式的外觀(HTML/CSS)和效能,請使用您的 IDE 或瀏覽器工具,例如 Chrome DevTools。

總覽

#

若要提供應用程式,請使用 webdev serve(在命令列或透過您的 IDE)來啟動 Dart 開發編譯器。若要啟用 Dart DevTools,請加入 --debug--debug-extension 選項(在命令列或透過您的 IDE)

$ webdev serve --debug

當您使用 webdev--debug 旗標執行應用程式時,您可以按 Alt+D(或 macOS 上的 Option+D)來開啟 Dart DevTools。

若要開啟 Chrome DevTools,請按 Control+Shift+I(或 macOS 上的 Command+Option+I)。如果您想要使用 Chrome DevTools 來偵錯您的應用程式,您可以使用來源對應來顯示您的 Dart 原始檔案,而不是編譯器產生的 JavaScript。如需使用 Chrome DevTools 的詳細資訊,請參閱Chrome DevTools 文件

若要使用 Dart DevTools 或 Chrome DevTools 來偵錯 Dart 網頁應用程式,您需要下列軟體

開始使用 Dart DevTools

#
DevTools

本節將引導您了解使用 Dart DevTools 偵錯網頁應用程式的基本知識。如果您已經有準備好偵錯的應用程式,您可以跳過建立測試應用程式(步驟 1),但您需要調整指示以符合您的應用程式。

  1. 選用:複製 webdev 儲存庫,這樣您就可以使用其範例應用程式來操作 Dart DevTools。

  2. 選用:安裝 Dart 偵錯擴充功能,這樣您就可以執行您的應用程式,並在已執行的 Chrome 執行個體中開啟 Dart DevTools。

  3. 在您應用程式的最上層目錄中,執行 dart pub get 以取得其相依性。

    $ cd example
    $ dart pub get
  4. 使用您的 IDE 或命令列上的 webdev,以偵錯模式編譯並提供應用程式。

    如果您在命令列使用 webdev,要使用的命令取決於您是否想要(或需要)在已執行的 Chrome 執行個體中執行應用程式和偵錯工具。

    • 如果您已安裝 Dart 偵錯擴充功能,並想要使用現有的 Chrome 執行個體進行偵錯

      $ webdev serve --debug-extension
    • 否則,請使用下列命令,它會啟動新的 Chrome 執行個體並執行應用程式

      $ webdev serve --debug
  5. 如果您的應用程式尚未執行,請在 Chrome 瀏覽器視窗中開啟它。
    例如,如果您使用 webdev serve --debug-extension 但沒有任何引數,請開啟 http://127.0.0.1:8080

  6. 開啟 Dart DevTools 以偵錯目前視窗中執行的應用程式。

    • 如果已安裝 Dart 偵錯擴充功能,且您使用 webdev--debug-extension 旗標,請按一下瀏覽器視窗右上角的 Dart 標誌 Dart 標誌

    • 如果您使用 webdev--debug 旗標,請按 Alt+D(或 macOS 上的 Option+D)。

    Dart DevTools 視窗隨即出現,並顯示應用程式主要檔案的原始程式碼。

  7. 按一下程式碼行左側,在計時器或事件處理常式內設定中斷點。
    例如,按一下事件處理常式或計時器回呼內第一行的行號。

  8. 觸發造成函式呼叫的事件。執行會在該中斷點停止。

  9. 變數 窗格中,檢查變數的值。

  10. 繼續指令碼執行,並再次觸發該事件,或按 暫停。執行會再次暫停。

  11. 嘗試使用 單步進入單步跳過單步跳出 按鈕逐行單步執行程式碼。

  12. 變更您的原始程式碼並重新載入執行應用程式的 Chrome 視窗。應用程式會快速重建和重新載入。在 問題 1925 修正之前,重新載入應用程式時會遺失您的中斷點。

  13. 按一下 記錄 按鈕以查看 stdout、stderr 和系統記錄。

取得命令列工具套件

#

如果您使用的是命令列而不是 IDE 或啟用 Dart 的編輯器,則您需要 webdev 工具。Dart DevTools 由 SDK 提供。

$ dart pub global activate webdev

如果您的 PATH 環境變數設定正確,您現在可以在命令列使用這些工具

$ webdev --help
A tool to develop Dart web projects.
...

如需設定 PATH 的資訊,請參閱 dart pub global 文件

每當您更新 Dart SDK 時,請再次啟用工具來更新它們

$ dart pub global activate webdev     # update webdev

偵錯生產程式碼

#

本節提供在 Chrome、Firefox 和 Safari 中偵錯生產編譯程式碼的秘訣。您只能在支援來源對應的瀏覽器(例如 Chrome)中偵錯 JavaScript 程式碼。

無論您使用哪個瀏覽器,都應該至少啟用在未捕獲的例外狀況上暫停,或許在所有例外狀況上暫停。對於將使用者程式碼包裝在 try-catch 中的架構(例如 dart:async),我們建議在所有例外狀況上暫停。

Chrome

#

若要在 Chrome 中偵錯

  1. 開啟開發人員工具視窗,如 Chrome DevTools 文件中所述。
  2. 開啟來源對應,如影片 Chrome 中的來源對應中所述。
  3. 啟用偵錯功能,您可以針對所有例外狀況或僅針對未捕獲的例外狀況進行偵錯,如如何設定中斷點所述。
  4. 重新載入您的應用程式。

Edge

#

在 Edge 中偵錯

  1. 更新至最新版本的 Edge。
  2. 載入開發人員工具 (F12)。
  3. 重新載入應用程式。偵錯工具分頁會顯示來源對應的檔案。
  4. 例外狀況行為可透過 Ctrl+Shift+E 控制;預設值為在未處理的例外狀況時中斷

Firefox

#

在 Firefox 中偵錯

  1. 開啟網頁開發人員工具視窗,如Firefox 開發人員工具文件中所述。

  2. 啟用在例外狀況時暫停,如下圖所示

    Enable Pause on exceptions in Firefox debugger
  3. 重新載入應用程式。偵錯工具分頁會顯示來源對應的檔案。

Safari

#

在 Safari 中偵錯

  1. 開啟開發選單,如Safari 網頁偵測器教學中所述。
  2. 啟用中斷,您可以針對所有例外狀況或僅針對未捕獲的例外狀況中斷。請參閱新增 JavaScript 中斷點,位於Safari 開發人員說明之下。
  3. 重新載入您的應用程式。

資源

#

若要了解更多資訊,請參閱以下內容