使用原生語言偵錯程式
如何將原生偵錯程式連線到正在執行的 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 程式碼
#以下過程說明了如何對預設的 Flutter 示例應用使用 Dart 偵錯程式。VS Code 中的特色元件在你除錯自己的 Flutter 專案時同樣有效且可見。
-
建立一個基礎的 Flutter 應用。
flutter create my_appCreating 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 -
使用 VS Code 開啟 Flutter 應用中的
lib\main.dart檔案。 -
點選蟲子圖示(
)。這會在 VS Code 中開啟以下窗格- 除錯 (Debug)
- 除錯控制檯 (Debug Console)
- Widget 檢查器 (Widget Inspector)
首次執行偵錯程式時耗時最長。
-
測試偵錯程式。
a. 在
main.dart中,點選這一行dart_counter++;b. 按 Shift + F9。這會在
_counter變數遞增處新增一個斷點。c. 在應用中,點選 **+** 按鈕以遞增計數器。應用將暫停。
d. 此時,VS Code 將顯示
- 在編輯器組 (Editor Groups) 中
main.dart中高亮的斷點- Widget 檢查器的元件樹 (Widget Tree) 中 Flutter 應用的元件層級結構
- 在側邊欄 (side bar) 中
- 呼叫堆疊 (Call Stack) 部分中應用的狀態
- 變數 (Variables) 部分中
this區域性變數的值
- 在面板 (panel) 中
- 除錯控制檯 (Debug console) 中 Flutter 應用的日誌
- 在編輯器組 (Editor Groups) 中
VS Code Flutter 偵錯程式
#VS Code 的 Flutter 外掛為 VS Code 使用者介面增加了一些元件。
VS Code 介面變更
#啟動時,Flutter 偵錯程式會向 VS Code 介面新增除錯工具。
以下截圖和表格解釋了每個工具的用途。
| 截圖中的高亮顏色 | 欄、面板或標籤頁 | 內容 |
|---|---|---|
| 黃色 | 變數 (Variables) | Flutter 應用中當前變數值的列表 |
| 監視 (Watch) | 你選擇在 Flutter 應用中跟蹤的項的列表 | |
| 呼叫堆疊 (Call Stack) | Flutter 應用中活動子程式的堆疊 | |
| 斷點 (Breakpoints) | 你設定的異常和斷點的列表 | |
| 綠色 | <Flutter 檔案> |
你正在編輯的檔案 |
| 粉色 | Widget 檢查器 (Widget Inspector) | 執行中 Flutter 應用的元件層級結構 |
| 藍色 | 佈局資源管理器 (Layout Explorer) | 你在 Widget 檢查器中選中的元件的佈局視覺化 |
| 元件詳情樹 (Widget Details Tree) | 你在 Widget 檢查器中選中的元件的屬性列表 | |
| 橙色 | 問題 (Problems) | Dart 分析器在當前 Dart 檔案中發現的問題列表 |
| 輸出 (Output) | 構建應用時 Flutter 應用返回的響應 | |
| 除錯控制檯 (Debug Console) | 除錯過程中 Flutter 應用生成的日誌或錯誤訊息 | |
| 終端 (Terminal) | VS Code 中包含的系統 shell 提示符 |
要更改面板(橙色)在 VS Code 中的位置,請前往 **檢視 (View)** > **外觀 (Appearance)** > **面板位置 (Panel Position)**。
VS Code Flutter 除錯工具欄
#該工具欄允許你使用任何偵錯程式。你可以單步跳入、跳出或跨過 Dart 語句、進行熱過載或恢復應用執行。
| 圖示 | 動作 | 預設鍵盤快捷鍵 |
|---|---|---|
|
|
||
| 啟動或恢復 | F5 | |
|
|
||
| 暫停 | F6 | |
|
|
||
| 單步跳過 | F10 | |
|
|
||
| 單步跳入 | F11 | |
|
|
||
| 單步跳出 | Shift + F11 | |
|
|
||
| 熱過載 | Ctrl + F5 | |
|
|
||
| 熱重啟 | Shift + Special + F5 | |
|
|
||
| 停止 | Shift + F5 | |
|
|
||
| 開啟 Widget 檢查器 |
更新測試 Flutter 應用
#在本指南的其餘部分,你需要更新測試 Flutter 應用。此更新會新增用於除錯的原生程式碼。
使用你偏好的 IDE 開啟
lib/main.dart檔案。-
用以下程式碼替換
main.dart的內容。展開以檢視此示例的 Flutter 程式碼
lib/main.dartdart// 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), ], ), ), ); } } -
要將
url_launcher軟體包新增為依賴項,請執行flutter pub addflutter pub add url_launcherResolving 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! -
檢查程式碼庫發生了什麼變化
在 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在 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 偵錯程式連線到你的應用。你不需要為了同時除錯 Dart 和 Android 程式碼而必須使用 VS Code。本指南包含 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 除錯大部分程式碼,請從本節開始。
-
要開啟 Flutter 應用目錄,請前往 **檔案 (File)** > **開啟資料夾... (Open Folder...)** 並選擇
my_app目錄。 開啟
lib/main.dart檔案。-
如果你可以為多個裝置構建應用,則必須先選擇裝置。
前往 **檢視 (View)** > **命令面板... (Command Palette...)**
你也可以按 Ctrl / Cmd + Shift + P。
輸入
flutter select。點選 **Flutter: 選擇裝置 (Flutter: Select Device)** 命令。
選擇你的目標裝置。
-
點選除錯圖示(
)。這會開啟 **除錯** 窗格並啟動應用。等待應用在裝置上啟動,並等待除錯窗格顯示 **已連線 (Connected)**。首次啟動偵錯程式時耗時較長。後續啟動速度會更快。此 Flutter 應用包含兩個按鈕
- 在瀏覽器中啟動 (Launch in browser):此按鈕會在裝置的預設瀏覽器中開啟此頁面。
- 在應用中啟動 (Launch in app):此按鈕會在你的應用內開啟此頁面。此按鈕僅適用於 iOS 或 Android。桌面應用會啟動瀏覽器。
在 Android Studio 中附加到 Flutter 程序
#-
點選 **將偵錯程式附加到 Android 程序 (Attach debugger to Android process)** 按鈕。(
):::tip 如果此按鈕未出現在 **Projects** 選單欄中,請確認你開啟的是 Flutter 應用程式專案,而非 Flutter 外掛。 ::
-
**程序 (process)** 對話方塊會為每個已連線的裝置顯示一個條目。選擇 **顯示所有程序 (show all processes)** 以顯示每個裝置上可用的程序。
-
選擇你想要附加到的程序。在本指南中,選擇使用 **Emulator Pixel_5_API_33** 的
com.example.my_app程序。 在 **除錯 (Debug)** 窗格中找到 **Android 偵錯程式 (Android Debugger)** 標籤頁。
-
在 **專案 (Project)** 窗格中,依次展開 **my_app_android** > **android** > **app** > **src** > **main** > **java** > **io.flutter plugins**。
-
雙擊 **GeneratedProjectRegistrant** 以在 **編輯 (Edit)** 窗格中開啟 Java 程式碼。
在本過程結束時,Dart 和 Android 偵錯程式將與同一個程序互動。使用其中任意一個或同時使用兩個來設定斷點、檢查堆疊、恢復執行等。換句話說,開始除錯吧!
首先使用 Android Studio 開始除錯
#如果你使用 Android Studio 除錯大部分程式碼,請從本節開始。
-
要開啟 Flutter 應用目錄,請前往 **檔案 (File)** > **開啟... (Open...)** 並選擇
my_app目錄。 開啟
lib/main.dart檔案。-
選擇一個虛擬 Android 裝置。前往工具欄,開啟最左側的下拉選單,點選 **開啟 Android 模擬器: <裝置> (Open Android Emulator: <device>)**。
你可以選擇任何未包含
arm64的已安裝模擬器。 從同一選單中,選擇該虛擬 Android 裝置。
-
在工具欄中,點選 **執行 'main.dart' (Run 'main.dart')**。
你也可以按 Ctrl + Shift + R。
應用在模擬器中顯示後,繼續下一步。
-
點選 **將偵錯程式附加到 Android 程序 (Attach debugger to Android process)** 按鈕。(
):::tip 如果此按鈕未出現在 **Projects** 選單欄中,請確認你開啟的是 Flutter 應用程式專案,而非 Flutter 外掛。 ::
-
**程序 (process)** 對話方塊會為每個已連線的裝置顯示一個條目。選擇 **顯示所有程序 (show all processes)** 以顯示每個裝置上可用的程序。
-
選擇你想要附加到的程序。在本指南中,選擇使用 **Emulator Pixel_5_API_33** 的
com.example.my_app程序。 在 **除錯 (Debug)** 窗格中找到 **Android 偵錯程式 (Android Debugger)** 標籤頁。
-
在 **專案 (Project)** 窗格中,依次展開 **my_app_android** > **android** > **app** > **src** > **main** > **java** > **io.flutter plugins**。
-
雙擊 **GeneratedProjectRegistrant** 以在 **編輯 (Edit)** 窗格中開啟 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 偵錯程式
#-
要開啟 Flutter 應用目錄,請前往 **檔案 (File)** > **開啟資料夾... (Open Folder...)** 並選擇
my_app目錄。 開啟
lib/main.dart檔案。-
如果你可以為多個裝置構建應用,則必須先選擇裝置。
前往 **檢視 (View)** > **命令面板... (Command Palette...)**
你也可以按 Ctrl / Cmd + Shift + P。
輸入
flutter select。點選 **Flutter: 選擇裝置 (Flutter: Select Device)** 命令。
選擇你的目標裝置。
-
點選除錯圖示(
)。這會開啟 **除錯** 窗格並啟動應用。等待應用在裝置上啟動,並等待除錯窗格顯示 **已連線 (Connected)**。首次啟動偵錯程式時耗時較長。後續啟動速度會更快。此 Flutter 應用包含兩個按鈕
- 在瀏覽器中啟動 (Launch in browser):此按鈕會在裝置的預設瀏覽器中開啟此頁面。
- 在應用中啟動 (Launch in app):此按鈕會在你的應用內開啟此頁面。此按鈕僅適用於 iOS 或 Android。桌面應用會啟動瀏覽器。
在 Xcode 中附加到 Flutter 程序
#要在 Xcode 中附加到 Flutter 應用
-
前往 **除錯 (Debug)** > **附加到程序 (Attach to Process)**。
-
選擇 **Runner**。它應該位於 **附加到程序** 選單的 **可能的目標 (Likely Targets)** 標題下方的頂部。
首先使用 Xcode 開始除錯
#如果你使用 Xcode 除錯大部分程式碼,請從本節開始。
啟動 Xcode 偵錯程式
#從你的 Flutter 應用目錄開啟
ios/Runner.xcworkspace。-
使用工具欄中的 **方案 (Scheme)** 選單選擇正確的裝置。
如果沒有特別偏好,請選擇 **iPhone Pro 14**。
-
在 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=/ 複製 Dart VM 服務 URI。
在 VS Code 中附加到 Dart VM
#-
要開啟命令面板,請前往 **檢視 (View)** > **命令面板... (Command Palette...)**
你也可以按 Cmd + Shift + P。
輸入
debug。點選 **除錯: 附加到裝置上的 Flutter (Debug: Attach to Flutter on Device)** 命令。
-
在 **貼上 VM 服務 URI (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 中啟動偵錯程式
#-
要開啟 Flutter 應用目錄,請前往 **檔案 (File)** > **開啟資料夾... (Open Folder...)** 並選擇
my_app目錄。 開啟
lib/main.dart檔案。-
如果你可以為多個裝置構建應用,則必須先選擇裝置。
前往 **檢視 (View)** > **命令面板... (Command Palette...)**
你也可以按 Ctrl / Cmd + Shift + P。
輸入
flutter select。點選 **Flutter: 選擇裝置 (Flutter: Select Device)** 命令。
選擇你的目標裝置。
-
點選除錯圖示(
)。這會開啟 **除錯** 窗格並啟動應用。等待應用在裝置上啟動,並等待除錯窗格顯示 **已連線 (Connected)**。首次啟動偵錯程式時耗時較長。後續啟動速度會更快。此 Flutter 應用包含兩個按鈕
- 在瀏覽器中啟動 (Launch in browser):此按鈕會在裝置的預設瀏覽器中開啟此頁面。
- 在應用中啟動 (Launch in app):此按鈕會在你的應用內開啟此頁面。此按鈕僅適用於 iOS 或 Android。桌面應用會啟動瀏覽器。
在 Xcode 中附加到 Flutter 程序
#-
要附加到 Flutter 應用,請前往 **除錯 (Debug)** > **附加到程序 (Attach to Process)** > **Runner**。
**Runner** 應該位於 **附加到程序** 選單的 **可能的目標 (Likely Targets)** 標題下方的頂部。
首先使用 Xcode 開始除錯
#在 Xcode 中啟動偵錯程式
#從你的 Flutter 應用目錄開啟
macos/Runner.xcworkspace。-
在 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=/ 複製 Dart VM 服務 URI。
在 VS Code 中附加到 Dart VM
#-
要開啟命令面板,請前往 **檢視 (View)** > **命令面板... (Command Palette...)**
你也可以按 Cmd + Shift + P。
輸入
debug。點選 **除錯: 附加到裝置上的 Flutter (Debug: Attach to Flutter on Device)** 命令。
-
在 **貼上 VM 服務 URI (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 中啟動偵錯程式
#-
要開啟 Flutter 應用目錄,請前往 **檔案 (File)** > **開啟資料夾... (Open Folder...)** 並選擇
my_app目錄。 開啟
lib/main.dart檔案。-
如果你可以為多個裝置構建應用,則必須先選擇裝置。
前往 **檢視 (View)** > **命令面板... (Command Palette...)**
你也可以按 Ctrl / Cmd + Shift + P。
輸入
flutter select。點選 **Flutter: 選擇裝置 (Flutter: Select Device)** 命令。
選擇你的目標裝置。
-
點選除錯圖示(
)。這會開啟 **除錯** 窗格並啟動應用。等待應用在裝置上啟動,並等待除錯窗格顯示 **已連線 (Connected)**。首次啟動偵錯程式時耗時較長。後續啟動速度會更快。此 Flutter 應用包含兩個按鈕
- 在瀏覽器中啟動 (Launch in browser):此按鈕會在裝置的預設瀏覽器中開啟此頁面。
- 在應用中啟動 (Launch in app):此按鈕會在你的應用內開啟此頁面。此按鈕僅適用於 iOS 或 Android。桌面應用會啟動瀏覽器。
在 Visual Studio 中附加到 Flutter 程序
#-
要開啟專案解決方案檔案,請前往 **檔案 (File)** > **開啟 (Open)** > **專案/解決方案... (Project/Solution…)**
你也可以按 Ctrl + Shift + O。
選擇你的 Flutter 應用目錄中的
build/windows/my_app.sln檔案。-
前往 **除錯 (Debug)** > **附加到程序 (Attach to Process)**。
你也可以按 Ctrl + Alt + P。
-
從 **附加到程序** 對話方塊中,選擇
my_app.exe。Visual Studio 開始監控該 Flutter 應用。
首先使用 Visual Studio 開始除錯
#如果你使用 Visual Studio 除錯大部分程式碼,請從本節開始。
啟動本地 Windows 偵錯程式
#-
要開啟專案解決方案檔案,請前往 **檔案 (File)** > **開啟 (Open)** > **專案/解決方案... (Project/Solution…)**
你也可以按 Ctrl + Shift + O。
選擇你的 Flutter 應用目錄中的
build/windows/my_app.sln檔案。-
將
my_app設定為啟動專案。在 **解決方案資源管理器 (Solution Explorer)** 中,右鍵點選my_app並選擇 **設為啟動專案 (Set as Startup Project)**。 -
點選 **本地 Windows 偵錯程式 (Local Windows Debugger)** 開始除錯。
你也可以按 F5。
當 Flutter 應用啟動後,控制檯視窗會顯示一條包含 Dart VM 服務 URI 的訊息。它類似於以下響應
flutter: The Dart VM service is listening on http://127.0.0.1:62080/KPHEj2qPD1E=/ 複製 Dart VM 服務 URI。
在 VS Code 中附加到 Dart VM
#-
要開啟命令面板,請前往 **檢視 (View)** > **命令面板... (Command Palette...)**
你也可以按 Cmd + Shift + P。
輸入
debug。點選 **除錯: 附加到裝置上的 Flutter (Debug: Attach to Flutter on Device)** 命令。
-
在 **貼上 VM 服務 URI (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 上找到除錯資源。