如果你只使用 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.flutterdart.cn/
    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 Inspector(小部件检查器)Widget Tree(小部件树)中 Flutter 应用的小部件层次结构
    • 侧边栏
      • 调用堆栈 部分中的应用状态
      • 变量 部分中 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 应用中活动子例程的堆栈
断点你设置的异常和断点列表
绿色你正在编辑的文件
粉色Widget Inspector(小部件检查器)运行中的 Flutter 应用中的小部件层次结构
蓝色布局浏览器Flutter 如何放置你在小部件检查器中选择的小部件的视觉效果
小部件详细信息树小部件检查器中选择的小部件的属性列表
橙色问题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打开小部件检查器

更新测试 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 应用目录,请转到 文件 > 打开文件夹... 并选择 my_app 目录。

  2. 打开 lib/main.dart 文件。

  3. 如果可以为多个设备构建应用,则必须先选择设备。

    转到 视图 > 命令面板...

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

  4. 键入 flutter select

  5. 单击 Flutter: Select Device 命令。

  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 应用目录,请转到 文件 > 打开... 并选择 my_app 目录。

  2. 打开 lib/main.dart 文件。

  3. 选择一个虚拟 Android 设备。转到工具栏,打开最左侧的下拉菜单,然后点击 打开 Android 模拟器:<设备>

    你可以选择任何已安装的、不包含 arm64 的模拟器。

  4. 从同一菜单中,选择虚拟 Android 设备。

  5. 从工具栏中,点击 运行 '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: Select Device 命令。

  6. 选择你的目标设备。

  7. 单击调试图标 (VS Code 的调试图标,用于触发 Flutter 应用的调试模式)。这将打开 调试 窗格并启动应用。等待应用在设备上启动,并等待调试窗格显示 已连接。首次启动调试器所需时间较长。后续启动会更快。

    此 Flutter 应用包含两个按钮

    • 在浏览器中启动:此按钮在设备的默认浏览器中打开此页面。
    • 在应用中启动:此按钮在你的应用中打开此页面。此按钮仅适用于 iOS 或 Android。桌面应用将启动浏览器。
在 Xcode 中附加到 Flutter 进程
#

在 Xcode 中附加到 Flutter 应用

  1. 转到 调试 > 附加到进程 >

  2. 选择 Runner。它应该位于 附加到进程 菜单的顶部,在 可能的目标 标题下。

首先使用 Xcode 开始调试

#

如果你主要使用 Xcode 调试代码,请从本节开始。

启动 Xcode 调试器
#
  1. 从你的 Flutter 应用目录中打开 ios/Runner.xcworkspace

  2. 使用工具栏中的 Scheme 菜单选择正确的设备。

    如果你没有偏好,选择 iPhone Pro 14

  3. 在 Xcode 中将此 Runner 作为普通应用运行。

    运行完成后,Xcode 底部 调试 区域会显示一条包含 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. 要打开命令面板,请转到 视图 > 命令面板...

    你也可以按 Cmd + Shift + P

  2. 键入 debug

  3. 单击 Debug: Attach to Flutter on Device 命令。

  4. 粘贴 VM 服务 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: Select Device 命令。

  6. 选择你的目标设备。

  7. 单击调试图标 (VS Code 的调试图标,用于触发 Flutter 应用的调试模式)。这将打开 调试 窗格并启动应用。等待应用在设备上启动,并等待调试窗格显示 已连接。首次启动调试器所需时间较长。后续启动会更快。

    此 Flutter 应用包含两个按钮

    • 在浏览器中启动:此按钮在设备的默认浏览器中打开此页面。
    • 在应用中启动:此按钮在你的应用中打开此页面。此按钮仅适用于 iOS 或 Android。桌面应用将启动浏览器。
在 Xcode 中附加到 Flutter 进程
#
  1. 要附加到 Flutter 应用,请转到 调试 > 附加到进程 > Runner

    Runner 应该位于 附加到进程 菜单的顶部,在 可能的目标 标题下。

首先使用 Xcode 开始调试

#
在 Xcode 中启动调试器
#
  1. 从你的 Flutter 应用目录中打开 macos/Runner.xcworkspace

  2. 在 Xcode 中将此 Runner 作为普通应用运行。

    运行完成后,Xcode 底部 调试 区域会显示一条包含 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. 要打开命令面板,请转到 视图 > 命令面板...

    你也可以按 Cmd + Shift + P

  2. 键入 debug

  3. 单击 Debug: Attach to Flutter on Device 命令。

  4. 粘贴 VM 服务 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: Select Device 命令。

  6. 选择你的目标设备。

  7. 单击调试图标 (VS Code 的调试图标,用于触发 Flutter 应用的调试模式)。这将打开 调试 窗格并启动应用。等待应用在设备上启动,并等待调试窗格显示 已连接。首次启动调试器所需时间较长。后续启动会更快。

    此 Flutter 应用包含两个按钮

    • 在浏览器中启动:此按钮在设备的默认浏览器中打开此页面。
    • 在应用中启动:此按钮在你的应用中打开此页面。此按钮仅适用于 iOS 或 Android。桌面应用将启动浏览器。
在 Visual Studio 中附加到 Flutter 进程
#
  1. 要打开项目解决方案文件,请转到 文件 > 打开 > 项目/解决方案...

    你也可以按 Ctrl + Shift + O

  2. 选择你的 Flutter 应用目录中的 build/windows/my_app.sln 文件。

  3. 转到 调试 > 附加到进程

    你也可以按 Ctrl + Alt + P

  4. 附加到进程 对话框中,选择 my_app.exe

    Visual Studio 开始监视 Flutter 应用。

首先使用 Visual Studio 开始调试

#

如果你主要使用 Visual Studio 调试代码,请从本节开始。

启动本地 Windows 调试器
#
  1. 要打开项目解决方案文件,请转到 文件 > 打开 > 项目/解决方案...

    你也可以按 Ctrl + Shift + O

  2. 选择你的 Flutter 应用目录中的 build/windows/my_app.sln 文件。

  3. my_app 设置为启动项目。在 解决方案资源管理器 中,右键单击 my_app 并选择 设置为启动项目

  4. 点击 本地 Windows 调试器 开始调试。

    你也可以按 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. 要打开命令面板,请转到 视图 > 命令面板...

    你也可以按 Cmd + Shift + P

  2. 键入 debug

  3. 单击 Debug: Attach to Flutter on Device 命令。

  4. 粘贴 VM 服务 URI 框中,粘贴你从 Visual Studio 复制的 URI 并按 Enter

资源

#

查看以下关于调试 Flutter、iOS、Android、macOS 和 Windows 的资源

Flutter

#

Android

#

你可以在 developer.android.com 上找到以下调试资源。

iOS 和 macOS

#

你可以在 developer.apple.com 上找到以下调试资源。

Windows

#

你可以在 Microsoft Learn 上找到调试资源。