跳到主要內容

使用原生語言除錯器

如果您只使用 Dart 程式碼編寫 Flutter 應用程式,您可以使用 IDE 的除錯器來除錯程式碼。Flutter 團隊推薦使用 VS Code。

如果您編寫特定平台的插件或使用特定平台的函式庫,您可以使用原生除錯器來除錯該部分的程式碼。

  • 若要除錯以 Swift 或 Objective-C 編寫的 iOS 或 macOS 程式碼,您可以使用 Xcode。
  • 若要除錯以 Java 或 Kotlin 編寫的 Android 程式碼,您可以使用 Android Studio。
  • 若要除錯以 C++ 編寫的 Windows 程式碼,您可以使用 Visual Studio。

本指南說明如何將兩個除錯器連接到您的 Dart 應用程式,一個用於 Dart,另一個用於原生程式碼。

除錯 Dart 程式碼

#

本指南說明如何使用 VS Code 來除錯您的 Flutter 應用程式。您也可以使用您慣用的 IDE,並安裝和設定 Flutter 和 Dart 插件。

使用 VS Code 除錯 Dart 程式碼

#

以下步驟說明如何使用 Dart 除錯器來除錯預設的 Flutter 範例應用程式。VS Code 中的功能元件在除錯您自己的 Flutter 專案時也會運作並顯示。

  1. 建立一個基本的 Flutter 應用程式。

    flutter create my_app
    Creating project my_app...
    Resolving dependencies in my_app... 
    Got dependencies in my_app.
    Wrote 129 files.
    
    All done!
    You can find general documentation for Flutter at: https://flutter-docs.dev.org.tw/
    Detailed API documentation is available at: https://api.flutter.dev/
    If you prefer video documentation, consider: https://www.youtube.com/c/flutterdev
    
    In order to run your application, type:
    
      $ cd my_app
      $ flutter run
    
    Your application code is in my_app/lib/main.dart.
    cd my_app
  2. 使用 VS Code 開啟 Flutter 應用程式中的 lib\main.dart 檔案。

  3. 按一下錯誤圖示 (VS Code 的錯誤圖示,用來觸發 Flutter 應用程式的除錯模式)。這會在 VS Code 中開啟以下窗格

    • 除錯
    • 除錯主控台
    • Widget Inspector

    第一次執行除錯器所需的時間最長。

  4. 測試除錯器。

    a. 在 main.dart 中,按一下這行

    dart
    _counter++;

    b. 按下 Shift + F9。這會在 _counter 變數遞增的位置新增一個中斷點。

    c. 在應用程式中,按一下 + 按鈕以遞增計數器。應用程式會暫停。

    d. 此時,VS Code 會顯示

    • 編輯器群組
      • main.dart 中醒目顯示的中斷點
      • Widget InspectorWidget 樹狀結構中 Flutter 應用程式的 widget 階層
    • 側邊欄
      • 呼叫堆疊區段中應用程式的狀態
      • 變數區段中 this 區域變數的值
    • 面板
      • 除錯主控台中 Flutter 應用程式的記錄

VS Code Flutter 除錯器

#

VS Code 的 Flutter 插件會在 VS Code 使用者介面中新增許多元件。

VS Code 介面的變更

#

啟動時,Flutter 除錯器會在 VS Code 介面中新增除錯工具。

以下螢幕截圖和表格說明每個工具的用途。

VS Code with the Flutter plugin UI additions

螢幕截圖中的醒目提示顏色列、面板或索引標籤目錄
黃色變數Flutter 應用程式中變數的目前值清單
監看您選擇在 Flutter 應用程式中追蹤的項目清單
呼叫堆疊Flutter 應用程式中作用中子常式的堆疊
中斷點您設定的例外狀況和中斷點清單
綠色<Flutter 檔案>您正在編輯的檔案
粉紅色Widget Inspector執行中 Flutter 應用程式中的 widget 階層
藍色配置探索器視覺化 Flutter 如何在 Widget Inspector 中放置您選取的 widget
Widget 詳細資料樹狀結構Widget Inspector 中選取的 widget 的屬性清單
橘色問題Dart 分析器在目前 Dart 檔案中找到的問題清單
輸出Flutter 應用程式在建置應用程式時傳回的回應
除錯主控台Flutter 應用程式在除錯時產生的記錄或錯誤訊息
終端機包含在 VS Code 中的系統殼層提示字元

若要變更面板 (橘色) 在 VS Code 中顯示的位置,請前往檢視 > 外觀 > 面板位置

VS Code Flutter 除錯工具列

#

您可以使用工具列透過任何除錯器進行除錯。您可以逐步執行、跳出和跳過 Dart 陳述式、熱重載或繼續執行應用程式。

Flutter debugger toolbar in VS Code

圖示動作預設鍵盤快速鍵
Small blue vertical line with a blue triangle that indicates playing or resuming the Flutter app開始或繼續F5
Small blue double vertical line that indicates pausing the Flutter app暫停F6
Small blue arched arrow over a blue circle that indicates skipping the current block or statement in the Flutter app逐步執行F10
Small blue downward arrow over a blue circle that indicates going into the next function in a Flutter app逐步進入F11
Small blue upward arrow over a blue circle that indicates exiting the current function after one passthrough in a Flutter app逐步跳出Shift + F11
Small yellow lightning bolt that indicates reloading the UI of a Flutter app without resetting any state values熱重載Ctrl + F5
Small green almost circular arrow that indicates reloading the UI of a Flutter app and resetting any state values熱重新啟動Shift + 特殊 + F5
Red empty square that indicates you want to stop the running Flutter app停止Shift + F5
Small blue magnifying class with the Flutter logo inside it that opens the Widget inspector開啟 Widget Inspector

更新測試 Flutter 應用程式

#

在本指南的其餘部分中,您需要更新測試 Flutter 應用程式。此更新會新增要除錯的原生程式碼。

  1. 使用您慣用的 IDE 開啟 lib/main.dart 檔案。

  2. main.dart 的內容替換為下列程式碼。

    展開以檢視此範例的 Flutter 程式碼
    lib/main.dart
    dart
    // Copyright 2023 The Flutter Authors. All rights reserved.
    // Use of this source code is governed by a BSD-style license that can be
    // found in the LICENSE file.
    
    import 'package:flutter/material.dart';
    import 'package:url_launcher/url_launcher.dart';
    
    void main() {
      runApp(const MyApp());
    }
    
    class MyApp extends StatelessWidget {
      const MyApp({super.key});
    
      @override
      Widget build(BuildContext context) {
        return MaterialApp(
          title: 'URL Launcher',
          theme: ThemeData(
            colorSchemeSeed: Colors.purple,
            brightness: Brightness.light,
          ),
          home: const MyHomePage(title: 'URL Launcher'),
        );
      }
    }
    
    class MyHomePage extends StatefulWidget {
      const MyHomePage({super.key, required this.title});
      final String title;
    
      @override
      State<MyHomePage> createState() => _MyHomePageState();
    }
    
    class _MyHomePageState extends State<MyHomePage> {
      Future<void>? _launched;
    
      Future<void> _launchInBrowser(Uri url) async {
        if (!await launchUrl(
          url,
          mode: LaunchMode.externalApplication,
        )) {
          throw Exception('Could not launch $url');
        }
      }
    
      Future<void> _launchInWebView(Uri url) async {
        if (!await launchUrl(
          url,
          mode: LaunchMode.inAppWebView,
        )) {
          throw Exception('Could not launch $url');
        }
      }
    
      Widget _launchStatus(BuildContext context, AsyncSnapshot<void> snapshot) {
        if (snapshot.hasError) {
          return Text('Error: ${snapshot.error}');
        } else {
          return const Text('');
        }
      }
    
      @override
      Widget build(BuildContext context) {
        final Uri toLaunch = Uri(
            scheme: 'https',
            host: 'docs.flutter.dev',
            path: 'testing/native-debugging');
        return Scaffold(
          appBar: AppBar(
            title: Text(widget.title),
          ),
          body: Center(
            child: Column(
              mainAxisAlignment: MainAxisAlignment.center,
              children: <Widget>[
                Padding(
                  padding: const EdgeInsets.all(16),
                  child: Text(toLaunch.toString()),
                ),
                FilledButton(
                  onPressed: () => setState(() {
                    _launched = _launchInBrowser(toLaunch);
                  }),
                  child: const Text('Launch in browser'),
                ),
                const Padding(padding: EdgeInsets.all(16)),
                FilledButton(
                  onPressed: () => setState(() {
                    _launched = _launchInWebView(toLaunch);
                  }),
                  child: const Text('Launch in app'),
                ),
                const Padding(padding: EdgeInsets.all(16.0)),
                FutureBuilder<void>(future: _launched, builder: _launchStatus),
              ],
            ),
          ),
        );
      }
    }
  3. 若要將 url_launcher 套件新增為相依性,請執行 flutter pub add

    flutter pub add url_launcher
    Resolving dependencies... 
      collection 1.17.1 (1.17.2 available)
    + flutter_web_plugins 0.0.0 from sdk flutter
      matcher 0.12.15 (0.12.16 available)
      material_color_utilities 0.2.0 (0.8.0 available)
    + plugin_platform_interface 2.1.4
      source_span 1.9.1 (1.10.0 available)
      stream_channel 2.1.1 (2.1.2 available)
      test_api 0.5.1 (0.6.1 available)
    + url_launcher 6.1.11
    + url_launcher_android 6.0.36
    + url_launcher_ios 6.1.4
    + url_launcher_linux 3.0.5
    + url_launcher_macos 3.0.5
    + url_launcher_platform_interface 2.1.3
    + url_launcher_web 2.0.17
    + url_launcher_windows 3.0.6
    Changed 10 dependencies!
  4. 若要檢查程式碼庫中的變更

    1. 在 Linux 或 macOS 中,執行此 find 命令。

      find ./ -mmin -120
      ./ios/Flutter/Debug.xcconfig
      ./ios/Flutter/Release.xcconfig
      ./linux/flutter/generated_plugin_registrant.cc
      ./linux/flutter/generated_plugins.cmake
      ./macos/Flutter/Flutter-Debug.xcconfig
      ./macos/Flutter/Flutter-Release.xcconfig
      ./macos/Flutter/GeneratedPluginRegistrant.swift
      ./pubspec.lock
      ./pubspec.yaml
      ./windows/flutter/generated_plugin_registrant.cc
      ./windows/flutter/generated_plugins.cmake
    2. 在 Windows 中,於命令提示字元中執行此命令。

      Get-ChildItem C:\dev\example\ -Rescurse | Where-Object {$_.LastWriteTime -gt (Get-Date).AddDays(-1)}
      C:\dev\example\ios\Flutter\
      
      
      Mode                LastWriteTime         Length Name
      ----                -------------         ------ ----
                      8/1/2025   9:15 AM                Debug.xcconfig
                      8/1/2025   9:15 AM                Release.xcconfig
      
      C:\dev\example\linux\flutter\
      
      
      Mode                LastWriteTime         Length Name
      ----                -------------         ------ ----
                      8/1/2025   9:15 AM                generated_plugin_registrant.cc
                      8/1/2025   9:15 AM                generated_plugins.cmake
      
      C:\dev\example\macos\Flutter\
      
      
      Mode                LastWriteTime         Length Name
      ----                -------------         ------ ----
                      8/1/2025   9:15 AM                Flutter-Debug.xcconfig
                      8/1/2025   9:15 AM                Flutter-Release.xcconfig
                      8/1/2025   9:15 AM                GeneratedPluginRegistrant.swift
      
      C:\dev\example\
      
      
      Mode                LastWriteTime         Length Name
      ----                -------------         ------ ----
                      8/1/2025   9:15 AM                pubspec.lock
                      8/1/2025   9:15 AM                pubspec.yaml
      
      C:\dev\example\windows\flutter\
      
      
      Mode                LastWriteTime         Length Name
      ----                -------------         ------ ----
                      8/1/2025   9:15 AM                generated_plugin_registrant.cc
                      8/1/2025   9:15 AM                generated_plugins.cmake

安裝 url_launcher 會在 Flutter 應用程式目錄中新增所有目標平台的設定檔和程式碼檔案。

同時除錯 Dart 和原生語言程式碼

#

本節說明如何除錯 Flutter 應用程式中的 Dart 程式碼,以及使用其常規除錯器的任何原生程式碼。此功能讓您可以在編輯原生程式碼時利用 Flutter 的熱重載功能。

使用 Android Studio 除錯 Dart 和 Android 程式碼

#

若要除錯原生 Android 程式碼,您需要一個包含 Android 程式碼的 Flutter 應用程式。在本節中,您將學習如何將 Dart、Java 和 Kotlin 除錯器連接到您的應用程式。您不需要 VS Code 即可同時除錯 Dart 和 Android 程式碼。本指南包含 VS Code 指示,以與 Xcode 和 Visual Studio 指南保持一致。

這些章節使用在更新測試 Flutter 應用程式中建立的相同 Flutter url_launcher 應用程式範例。

在終端機中建置 Android 版本的 Flutter 應用程式

#

若要產生所需的 Android 平台相依性,請執行 flutter build 命令。

flutter build appbundle --debug
Running Gradle task 'bundleDebug'...                               27.1s
✓ Built build/app/outputs/bundle/debug/app-debug.aab.

先從 VS Code 開始除錯

#

如果您使用 VS Code 除錯大部分的程式碼,請從本節開始。

  1. 若要開啟 Flutter 應用程式目錄,請前往檔案 > 開啟資料夾... 並選擇 my_app 目錄。

  2. 開啟 lib/main.dart 檔案。

  3. 如果您可以為多個裝置建置應用程式,您必須先選取裝置。

    前往檢視 > 命令面板...

    您也可以按下 Ctrl / Cmd + Shift + P

  4. 輸入 flutter select

  5. 按一下 Flutter:選取裝置 命令。

  6. 選擇您的目標裝置。

  7. 按一下除錯圖示 (VS Code 的錯誤圖示,用來觸發 Flutter 應用程式的除錯模式)。這會開啟除錯窗格並啟動應用程式。等待應用程式在裝置上啟動,並等待除錯窗格指示已連線。除錯器第一次啟動需要較長的時間。後續啟動會更快。

    此 Flutter 應用程式包含兩個按鈕

    • 在瀏覽器中啟動:此按鈕會在您裝置的預設瀏覽器中開啟此頁面。
    • 在應用程式中啟動:此按鈕會在您的應用程式內開啟此頁面。此按鈕僅適用於 iOS 或 Android。桌面應用程式會啟動瀏覽器。

在 Android Studio 中附加至 Flutter 程序

#
  1. 按一下將除錯器附加至 Android 程序按鈕。( 一個小的綠色錯誤覆蓋著淺灰色箭頭)

  2. 程序對話方塊會針對每個連線的裝置顯示一個項目。選取顯示所有程序以顯示每個裝置的可用程序。

  3. 選擇您要附加的程序。在本指南中,請使用 Emulator Pixel_5_API_33 選取 com.example.my_app 程序。

  4. 除錯窗格中找到 Android 除錯器的索引標籤。

  5. 專案窗格中,展開 my_app_android > android > app > src > main > java > io.flutter plugins

  6. 按兩下 GeneratedProjectRegistrant 以在編輯窗格中開啟 Java 程式碼。

在此程序結束時,Dart 和 Android 除錯器都會與相同的程序互動。使用其中一個或兩個,來設定中斷點、檢查堆疊、繼續執行等等。換句話說,除錯!

先從 Android Studio 開始除錯

#

如果您主要使用 Android Studio 除錯程式碼,請從本節開始。

  1. 若要開啟 Flutter 應用程式目錄,請前往 File > Open... 並選擇 my_app 目錄。

  2. 開啟 lib/main.dart 檔案。

  3. 選擇一個 Android 虛擬裝置。前往工具列,開啟最左邊的下拉式選單,然後點擊 Open Android Emulator: <裝置>

    您可以選擇任何已安裝且不包含 arm64 的模擬器。

  4. 從同一個選單中,選擇虛擬 Android 裝置。

  5. 從工具列中,點擊 Run 'main.dart'

    您也可以按下 Ctrl + Shift + R

    應用程式在模擬器中顯示後,繼續下一步。

  6. 按一下將除錯器附加至 Android 程序按鈕。( 一個小的綠色錯誤覆蓋著淺灰色箭頭)

  7. 程序對話方塊會針對每個連線的裝置顯示一個項目。選取顯示所有程序以顯示每個裝置的可用程序。

  8. 選擇您要附加的程序。在本指南中,請使用 Emulator Pixel_5_API_33 選取 com.example.my_app 程序。

  9. 除錯窗格中找到 Android 除錯器的索引標籤。

  10. 專案窗格中,展開 my_app_android > android > app > src > main > java > io.flutter plugins

  11. 按兩下 GeneratedProjectRegistrant 以在編輯窗格中開啟 Java 程式碼。

在此程序結束時,Dart 和 Android 除錯器都會與相同的程序互動。使用其中一個或兩個,來設定中斷點、檢查堆疊、繼續執行等等。換句話說,除錯!

使用 Xcode 除錯 Dart 和 iOS 程式碼

#

若要除錯 iOS 程式碼,您需要一個包含 iOS 程式碼的 Flutter 應用程式。在本節中,您將學習如何將兩個除錯器連線至您的應用程式:透過 VS Code 連線 Flutter 和 Xcode。您需要同時執行 VS Code 和 Xcode。

這些章節使用在更新測試 Flutter 應用程式中建立的相同 Flutter url_launcher 應用程式範例。

在終端機中建置 Flutter 應用程式的 iOS 版本

#

若要產生所需的 iOS 平台相依性,請執行 flutter build 命令。

flutter build ios --config-only --no-codesign --debug
Warning: Building for device with codesigning disabled. You will have to manually codesign before deploying to device.
Building com.example.myApp for device (ios)...

先從 VS Code 開始除錯

#

如果您使用 VS Code 除錯大部分的程式碼,請從本節開始。

在 VS Code 中啟動 Dart 除錯器
#
  1. 若要開啟 Flutter 應用程式目錄,請前往檔案 > 開啟資料夾... 並選擇 my_app 目錄。

  2. 開啟 lib/main.dart 檔案。

  3. 如果您可以為多個裝置建置應用程式,您必須先選取裝置。

    前往檢視 > 命令面板...

    您也可以按下 Ctrl / Cmd + Shift + P

  4. 輸入 flutter select

  5. 按一下 Flutter:選取裝置 命令。

  6. 選擇您的目標裝置。

  7. 按一下除錯圖示 (VS Code 的錯誤圖示,用來觸發 Flutter 應用程式的除錯模式)。這會開啟除錯窗格並啟動應用程式。等待應用程式在裝置上啟動,並等待除錯窗格指示已連線。除錯器第一次啟動需要較長的時間。後續啟動會更快。

    此 Flutter 應用程式包含兩個按鈕

    • 在瀏覽器中啟動:此按鈕會在您裝置的預設瀏覽器中開啟此頁面。
    • 在應用程式中啟動:此按鈕會在您的應用程式內開啟此頁面。此按鈕僅適用於 iOS 或 Android。桌面應用程式會啟動瀏覽器。
在 Xcode 中附加至 Flutter 程序
#

若要在 Xcode 中附加至 Flutter 應用程式

  1. 前往 Debug > Attach to Process >

  2. 選擇 Runner。它應該在 Attach to Process 選單的頂部,位於 Likely Targets 標題下方。

先從 Xcode 開始除錯

#

如果您主要使用 Xcode 除錯程式碼,請從本節開始。

啟動 Xcode 除錯器
#
  1. 從您的 Flutter 應用程式目錄開啟 ios/Runner.xcworkspace

  2. 使用工具列中的 Scheme 選單選擇正確的裝置。

    如果您沒有偏好,請選擇 iPhone Pro 14

  3. 在 Xcode 中將此 Runner 作為一般應用程式執行。

    執行完成後,Xcode 底部的 Debug 區域會顯示一則包含 Dart VM 服務 URI 的訊息。它類似於以下回應

    2023-07-12 14:55:39.966191-0500 Runner[58361:53017145]
        flutter: The Dart VM service is listening on
        http://127.0.0.1:50642/00wEOvfyff8=/
  4. 複製 Dart VM 服務 URI。

在 VS Code 中附加至 Dart VM
#
  1. 若要開啟命令調色盤,請前往 View > Command Palette...

    您也可以按下 Cmd + Shift + P

  2. 輸入 debug

  3. 點擊 Debug: Attach to Flutter on Device 命令。

  4. Paste an VM Service URI 方塊中,貼上您從 Xcode 複製的 URI,然後按下 Enter

使用 Xcode 除錯 Dart 和 macOS 程式碼

#

若要除錯 macOS 程式碼,您需要一個包含 macOS 程式碼的 Flutter 應用程式。在本節中,您將學習如何將兩個除錯器連線至您的應用程式:透過 VS Code 連線 Flutter 和 Xcode。您需要同時執行 VS Code 和 Xcode。

這些章節使用在更新測試 Flutter 應用程式中建立的相同 Flutter url_launcher 應用程式範例。

在終端機中建置 Flutter 應用程式的 macOS 版本

#

若要產生所需的 macOS 平台相依性,請執行 flutter build 命令。

flutter build macos --debug
Building macOS application...

先從 VS Code 開始除錯

#
在 VS Code 中啟動除錯器
#
  1. 若要開啟 Flutter 應用程式目錄,請前往檔案 > 開啟資料夾... 並選擇 my_app 目錄。

  2. 開啟 lib/main.dart 檔案。

  3. 如果您可以為多個裝置建置應用程式,您必須先選取裝置。

    前往檢視 > 命令面板...

    您也可以按下 Ctrl / Cmd + Shift + P

  4. 輸入 flutter select

  5. 按一下 Flutter:選取裝置 命令。

  6. 選擇您的目標裝置。

  7. 按一下除錯圖示 (VS Code 的錯誤圖示,用來觸發 Flutter 應用程式的除錯模式)。這會開啟除錯窗格並啟動應用程式。等待應用程式在裝置上啟動,並等待除錯窗格指示已連線。除錯器第一次啟動需要較長的時間。後續啟動會更快。

    此 Flutter 應用程式包含兩個按鈕

    • 在瀏覽器中啟動:此按鈕會在您裝置的預設瀏覽器中開啟此頁面。
    • 在應用程式中啟動:此按鈕會在您的應用程式內開啟此頁面。此按鈕僅適用於 iOS 或 Android。桌面應用程式會啟動瀏覽器。
在 Xcode 中附加至 Flutter 程序
#
  1. 若要附加至 Flutter 應用程式,請前往 Debug > Attach to Process > Runner

    Runner 應該在 Attach to Process 選單的頂部,位於 Likely Targets 標題下方。

先從 Xcode 開始除錯

#
在 Xcode 中啟動除錯器
#
  1. 從您的 Flutter 應用程式目錄開啟 macos/Runner.xcworkspace

  2. 在 Xcode 中將此 Runner 作為一般應用程式執行。

    執行完成後,Xcode 底部的 Debug 區域會顯示一則包含 Dart VM 服務 URI 的訊息。它類似於以下回應

    2023-07-12 14:55:39.966191-0500 Runner[58361:53017145]
        flutter: The Dart VM service is listening on
        http://127.0.0.1:50642/00wEOvfyff8=/
  3. 複製 Dart VM 服務 URI。

在 VS Code 中附加至 Dart VM
#
  1. 若要開啟命令調色盤,請前往 View > Command Palette...

    您也可以按下 Cmd + Shift + P

  2. 輸入 debug

  3. 點擊 Debug: Attach to Flutter on Device 命令。

  4. Paste an VM Service URI 方塊中,貼上您從 Xcode 複製的 URI,然後按下 Enter

使用 Visual Studio 除錯 Dart 和 C++ 程式碼

#

若要除錯 C++ 程式碼,您需要一個包含 C++ 程式碼的 Flutter 應用程式。在本節中,您將學習如何將兩個除錯器連線至您的應用程式:透過 VS Code 連線 Flutter 和 Visual Studio。您需要同時執行 VS Code 和 Visual Studio。

這些章節使用在更新測試 Flutter 應用程式中建立的相同 Flutter url_launcher 應用程式範例。

在 PowerShell 或命令提示字元中建置 Flutter 應用程式的 Windows 版本

#

若要產生所需的 Windows 平台相依性,請執行 flutter build 命令。

C:\> flutter build windows --debug
Building Windows application...                                    31.4s
√  Built build\windows\runner\Debug\my_app.exe.

先從 VS Code 開始除錯

#

如果您使用 VS Code 除錯大部分的程式碼,請從本節開始。

在 VS Code 中啟動除錯器
#
  1. 若要開啟 Flutter 應用程式目錄,請前往檔案 > 開啟資料夾... 並選擇 my_app 目錄。

  2. 開啟 lib/main.dart 檔案。

  3. 如果您可以為多個裝置建置應用程式,您必須先選取裝置。

    前往檢視 > 命令面板...

    您也可以按下 Ctrl / Cmd + Shift + P

  4. 輸入 flutter select

  5. 按一下 Flutter:選取裝置 命令。

  6. 選擇您的目標裝置。

  7. 按一下除錯圖示 (VS Code 的錯誤圖示,用來觸發 Flutter 應用程式的除錯模式)。這會開啟除錯窗格並啟動應用程式。等待應用程式在裝置上啟動,並等待除錯窗格指示已連線。除錯器第一次啟動需要較長的時間。後續啟動會更快。

    此 Flutter 應用程式包含兩個按鈕

    • 在瀏覽器中啟動:此按鈕會在您裝置的預設瀏覽器中開啟此頁面。
    • 在應用程式中啟動:此按鈕會在您的應用程式內開啟此頁面。此按鈕僅適用於 iOS 或 Android。桌面應用程式會啟動瀏覽器。
在 Visual Studio 中附加至 Flutter 程序
#
  1. 若要開啟專案解決方案檔案,請前往 File > Open > Project/Solution…

    您也可以按下 Ctrl + Shift + O

  2. 在您的 Flutter 應用程式目錄中選擇 build/windows/my_app.sln 檔案。

  3. 前往 Debug > Attach to Process

    您也可以按下 Ctrl + Alt + P

  4. Attach to Process 對話方塊中,選擇 my_app.exe

    Visual Studio 開始監控 Flutter 應用程式。

先從 Visual Studio 開始除錯

#

如果您主要使用 Visual Studio 除錯程式碼,請從本節開始。

啟動本機 Windows 除錯器
#
  1. 若要開啟專案解決方案檔案,請前往 File > Open > Project/Solution…

    您也可以按下 Ctrl + Shift + O

  2. 在您的 Flutter 應用程式目錄中選擇 build/windows/my_app.sln 檔案。

  3. my_app 設定為啟動專案。在 Solution Explorer 中,在 my_app 上按一下右鍵,然後選擇 Set as Startup Project

  4. 點擊 Local Windows Debugger 以開始除錯。

    您也可以按下 F5

    當 Flutter 應用程式啟動後,主控台視窗會顯示一則包含 Dart VM 服務 URI 的訊息。它類似於以下回應

    flutter: The Dart VM service is listening on http://127.0.0.1:62080/KPHEj2qPD1E=/
  5. 複製 Dart VM 服務 URI。

在 VS Code 中附加至 Dart VM
#
  1. 若要開啟命令調色盤,請前往 View > Command Palette...

    您也可以按下 Cmd + Shift + P

  2. 輸入 debug

  3. 點擊 Debug: Attach to Flutter on Device 命令。

  4. Paste an VM Service URI 方塊中,貼上您從 Visual Studio 複製的 URI,然後按下 Enter

資源

#

請查看以下有關除錯 Flutter、iOS、Android、macOS 和 Windows 的資源

Flutter

#

Android

#

您可以在 developer.android.com 上找到以下除錯資源。

iOS 和 macOS

#

您可以在 developer.apple.com 上找到以下除錯資源。

Windows

#

您可以在 Microsoft Learn 上找到除錯資源。