如果您的 Flutter 應用僅使用 Dart 程式碼,您可以使用 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 應用。您也可以使用安裝和配置了 Flutter 和 Dart 外掛的首選 IDE。

使用 VS Code 除錯 Dart 程式碼

#

以下步驟將說明如何為預設的示例 Flutter 應用使用 Dart 偵錯程式。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://docs.flutter.club.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 檢查器

    首次執行偵錯程式需要最長時間。

  4. 測試偵錯程式。

    a. 在 main.dart 中,點選此行:

    dart
    _counter++;

    b. 按 Shift + F9。這會在 _counter 變數遞增的地方新增一個斷點。

    c. 在應用中,點選 **+** 按鈕以遞增計數器。應用會暫停。

    d. 此時,VS Code 會顯示:

    • 在 **編輯器組** 中:
      • main.dart 中高亮的斷點。
      • **Widget Inspector** 的 **Widget Tree** 中 Flutter 應用的 widget 層級結構。
    • 在 **側邊欄** 中:
      • **Call Stack** 部分的應用狀態。
      • **Variables** 部分的 this 區域性變數的值。
    • 在 **面板** 中:
      • **Debug console** 中的 Flutter 應用日誌。

VS Code Flutter 偵錯程式

#

VS Code 的 Flutter 外掛向 VS Code 使用者介面添加了許多元件。

VS Code 介面更改

#

啟動時,Flutter 偵錯程式會將除錯工具新增到 VS Code 介面。

以下螢幕截圖和表格解釋了每個工具的用途。

VS Code with the Flutter plugin UI additions

螢幕截圖中的高亮顏色欄、面板或選項卡內容
黃色VariablesFlutter 應用中變數當前值的列表。
Watch您選擇在 Flutter 應用中跟蹤的專案的列表。
Call StackFlutter 應用中活動子例程的堆疊。
Breakpoints您設定的異常和斷點列表。
綠色<Flutter 檔案>您正在編輯的檔案。
粉色Widget 檢查器執行中的 Flutter 應用的 widget 層級結構。
藍色Layout ExplorerWidget Inspector 中所選 widget 的 Flutter 佈局視覺化。
Widget Details TreeWidget Inspector 中所選 widget 的屬性列表。
橙色ProblemsDart 分析器在當前 Dart 檔案中找到的問題列表。
OutputFlutter 應用在構建應用時返回的響應。
除錯控制檯Flutter 應用在除錯時生成的日誌或錯誤訊息。
TerminalVS Code 中包含的系統 shell 提示符。

要更改面板(**橙色**)在 VS Code 中的顯示位置,請轉到 **View** > **Appearance** > **Panel Position**。

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 + Special + 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 應用。

在終端中構建 Flutter 應用的 Android 版本

#

要生成所需的 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 應用目錄,請轉到 **File** > **Open Folder...**,然後選擇 my_app 目錄。

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

  3. 如果您可以為多個裝置構建應用,則必須先選擇裝置。

    轉到 **View** > **Command Palette...**

    你也可以按 Ctrl / Cmd + Shift + P

  4. 鍵入 flutter select

  5. 點選 **Flutter: Select Device** 命令。

  6. 選擇您的目標裝置。

  7. 點選除錯圖示(VS Code 的蟲子圖示,用於觸發 Flutter 應用的除錯模式)。這將開啟 **Debug** 窗格並啟動應用。等待應用在裝置上啟動,並且除錯窗格顯示 **Connected**。偵錯程式首次啟動需要更長時間。後續啟動速度更快。

    此 Flutter 應用包含兩個按鈕:

    • **Launch in browser**:此按鈕會在裝置預設瀏覽器中開啟此頁面。
    • **Launch in app**:此按鈕會在應用內開啟此頁面。此按鈕僅適用於 iOS 或 Android。桌面應用會啟動瀏覽器。

附加到 Android Studio 中的 Flutter 程序

#
  1. 點選 **Attach debugger to Android process** 按鈕。(疊加著淺灰色箭頭的微小綠色蟲子

  2. **Process** 對話方塊會為每個連線的裝置顯示一個條目。選擇 **show all processes** 以顯示每個裝置的可用程序。

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

  4. 在 **Debug** 窗格中找到 **Android Debugger** 選項卡。

  5. 在 **Project** 窗格中,展開 my_app_android > android > app > src > main > java > io.flutter plugins

  6. 雙擊 **GeneratedProjectRegistrant** 在 **Edit** 窗格中開啟 Java 程式碼。

在此過程結束時,Dart 和 Android 偵錯程式都將與同一程序進行互動。使用其中一個或兩個來設定斷點、檢查堆疊、恢復執行等。換句話說,進行除錯!

先使用 Android Studio 開始除錯

#

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

  1. 要開啟 Flutter 應用目錄,請轉到 **File** > **Open...**,然後選擇 my_app 目錄。

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

  3. 選擇一個虛擬 Android 裝置。轉到工具欄,開啟最左側的下拉選單,然後點選 **Open Android Emulator: <device>**。

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

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

  5. 在工具欄中,點選 **Run 'main.dart'**。

    您也可以按 Ctrl + Shift + R

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

  6. 點選 **Attach debugger to Android process** 按鈕。(疊加著淺灰色箭頭的微小綠色蟲子

  7. **Process** 對話方塊會為每個連線的裝置顯示一個條目。選擇 **show all processes** 以顯示每個裝置的可用程序。

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

  9. 在 **Debug** 窗格中找到 **Android Debugger** 選項卡。

  10. 在 **Project** 窗格中,展開 my_app_android > android > app > src > main > java > io.flutter plugins

  11. 雙擊 **GeneratedProjectRegistrant** 在 **Edit** 窗格中開啟 Java 程式碼。

在此過程結束時,Dart 和 Android 偵錯程式都將與同一程序進行互動。使用其中一個或兩個來設定斷點、檢查堆疊、恢復執行等。換句話說,進行除錯!

</device>

使用 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 應用目錄,請轉到 **File** > **Open Folder...**,然後選擇 my_app 目錄。

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

  3. 如果您可以為多個裝置構建應用,則必須先選擇裝置。

    轉到 **View** > **Command Palette...**

    你也可以按 Ctrl / Cmd + Shift + P

  4. 鍵入 flutter select

  5. 點選 **Flutter: Select Device** 命令。

  6. 選擇您的目標裝置。

  7. 點選除錯圖示(VS Code 的蟲子圖示,用於觸發 Flutter 應用的除錯模式)。這將開啟 **Debug** 窗格並啟動應用。等待應用在裝置上啟動,並且除錯窗格顯示 **Connected**。偵錯程式首次啟動需要更長時間。後續啟動速度更快。

    此 Flutter 應用包含兩個按鈕:

    • **Launch in browser**:此按鈕會在裝置預設瀏覽器中開啟此頁面。
    • **Launch in app**:此按鈕會在應用內開啟此頁面。此按鈕僅適用於 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 應用目錄,請轉到 **File** > **Open Folder...**,然後選擇 my_app 目錄。

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

  3. 如果您可以為多個裝置構建應用,則必須先選擇裝置。

    轉到 **View** > **Command Palette...**

    你也可以按 Ctrl / Cmd + Shift + P

  4. 鍵入 flutter select

  5. 點選 **Flutter: Select Device** 命令。

  6. 選擇您的目標裝置。

  7. 點選除錯圖示(VS Code 的蟲子圖示,用於觸發 Flutter 應用的除錯模式)。這將開啟 **Debug** 窗格並啟動應用。等待應用在裝置上啟動,並且除錯窗格顯示 **Connected**。偵錯程式首次啟動需要更長時間。後續啟動速度更快。

    此 Flutter 應用包含兩個按鈕:

    • **Launch in browser**:此按鈕會在裝置預設瀏覽器中開啟此頁面。
    • **Launch in app**:此按鈕會在應用內開啟此頁面。此按鈕僅適用於 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 應用目錄,請轉到 **File** > **Open Folder...**,然後選擇 my_app 目錄。

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

  3. 如果您可以為多個裝置構建應用,則必須先選擇裝置。

    轉到 **View** > **Command Palette...**

    你也可以按 Ctrl / Cmd + Shift + P

  4. 鍵入 flutter select

  5. 點選 **Flutter: Select Device** 命令。

  6. 選擇您的目標裝置。

  7. 點選除錯圖示(VS Code 的蟲子圖示,用於觸發 Flutter 應用的除錯模式)。這將開啟 **Debug** 窗格並啟動應用。等待應用在裝置上啟動,並且除錯窗格顯示 **Connected**。偵錯程式首次啟動需要更長時間。後續啟動速度更快。

    此 Flutter 應用包含兩個按鈕:

    • **Launch in browser**:此按鈕會在裝置預設瀏覽器中開啟此頁面。
    • **Launch in app**:此按鈕會在應用內開啟此頁面。此按鈕僅適用於 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 上找到除錯資源。