跳到主內容

使用原生語言偵錯程式

如何將原生偵錯程式連線到正在執行的 Flutter 應用。

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

使用 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://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's bug icon to trigger the debugging mode of a Flutter app)。這將在 VS Code 中開啟以下面板

    • 除錯
    • 除錯控制檯
    • Widget 檢查器

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

  4. 測試偵錯程式。

    a. 在 main.dart 中,單擊此行

    dart
    _counter++;
    

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

    c. 在應用中,單擊 + 按鈕以遞增計數器。應用將暫停。

    d. 此時,VS Code 將顯示

    • 編輯器組
      • main.dart 中高亮的斷點
      • Widget 檢查器Widget 樹 中,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 檢查器 正在執行的 Flutter 應用中 Widget 的層次結構
藍色 佈局資源管理器 Flutter 如何在 Widget 檢查器中放置您選擇的 Widget 的視覺化效果
Widget 詳細資訊樹 Widget 檢查器中選擇的 Widget 的屬性列表
橙色 問題 Dart 分析器在當前 Dart 檔案中發現的問題列表
輸出Flutter 應用在構建應用時返回的響應
除錯控制檯 Flutter 應用在除錯時生成的日誌或錯誤訊息
終端包含在 VS Code 中的系統 shell 提示符

要更改面板(以橙色顯示)在 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 + 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 檢查器

更新測試 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's bug icon to trigger the debugging mode of a Flutter app)。這將開啟 除錯 面板並啟動應用。等待應用在裝置上啟動,並等待除錯面板指示 已連線。偵錯程式首次啟動需要更長時間。後續啟動啟動更快。

    此 Flutter 應用包含兩個按鈕

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

將 Flutter 程序附加到 Android Studio

#
  1. 單擊 將偵錯程式附加到 Android 程序 按鈕。(Tiny green bug superimposed with a light grey arrow)

    :::提示 如果此按鈕未出現在 專案 選單欄中,請驗證您是否打開了 Flutter 應用程式 專案,而不是 Flutter 外掛。::

  2. 程序 對話方塊為每個連線的裝置顯示一個條目。選擇 顯示所有程序 以顯示每個裝置的可用程序。

  3. 選擇要附加到的程序。對於本指南,選擇使用 Emulator Pixel_5_API_33com.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 應用目錄,請轉到 檔案 > 開啟... 並選擇 my_app 目錄。

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

  3. 選擇虛擬 Android 裝置。轉到工具欄,開啟最左邊的下拉選單,然後單擊 開啟 Android 模擬器:<裝置>

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

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

  5. 從工具欄,單擊 執行 'main.dart'

    您也可以按 Ctrl + Shift + R

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

  6. 單擊 將偵錯程式附加到 Android 程序 按鈕。(Tiny green bug superimposed with a light grey arrow)

    :::提示 如果此按鈕未出現在 專案 選單欄中,請驗證您是否打開了 Flutter 應用程式 專案,而不是 Flutter 外掛。::

  7. 程序 對話方塊為每個連線的裝置顯示一個條目。選擇 顯示所有程序 以顯示每個裝置的可用程序。

  8. 選擇要附加到的程序。對於本指南,選擇使用 Emulator Pixel_5_API_33com.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 和 Xcode。您需要同時執行 VS Code 和 Xcode。

本節使用在 更新測試 Flutter 應用 中建立的相同的示例 Flutter url_launcher 應用。

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

#

要生成所需的 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's bug icon to trigger the debugging mode of a Flutter app)。這將開啟 除錯 面板並啟動應用。等待應用在裝置上啟動,並等待除錯面板指示 已連線。偵錯程式首次啟動需要更長時間。後續啟動啟動更快。

    此 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 應用。在本節中,您將學習如何將兩個偵錯程式連線到您的應用:Flutter 透過 VS Code 和 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's bug icon to trigger the debugging mode of a Flutter app)。這將開啟 除錯 面板並啟動應用。等待應用在裝置上啟動,並等待除錯面板指示 已連線。偵錯程式首次啟動需要更長時間。後續啟動啟動更快。

    此 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 應用。在本節中,您將學習如何將兩個偵錯程式連線到您的應用:Flutter 透過 VS Code 和 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's bug icon to trigger the debugging mode of a Flutter app)。這將開啟 除錯 面板並啟動應用。等待應用在裝置上啟動,並等待除錯面板指示 已連線。偵錯程式首次啟動需要更長時間。後續啟動啟動更快。

    此 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 上找到除錯資源。