Flutter dart 调试器断点停止工作

Posted

技术标签:

【中文标题】Flutter dart 调试器断点停止工作【英文标题】:Flutter dart debugger breakpoints stopped working 【发布时间】:2018-10-29 17:28:21 【问题描述】:

我正在学习 Dart 和 Flutter,并在 android Studio 3.1.2 下开发一个小型 Android Flutter 应用。突然调试器断点停止工作 - 以调试模式启动的应用程序永远不会在它们上停止,并且指示断点的红点变为内部带有 x 的红点。在我的应用程序中,它们仍然可以工作的唯一地方是 main.dart 模块。

我多次清理了项目,在两种不同的设备上进行了测试,完全卸载了我的 Flutter 调试应用程序,然后开始了新的 - 没有任何帮助。 beta(当前 beta 2)频道上的 Flutter 更新什么都不做。还尝试切换到开发和主频道 - 没有帮助。

有没有人遇到过类似的情况,如何处理?

编辑,添加mail.dart和flutter Doctor的输出(目前在master分支,但切换到beta或dev分支后出现同样的问题):

从 main.dart 导入,或者更好地从 main.dart 导入:

import 'package:flutter/material.dart';
import 'package:flutter_localizations/flutter_localizations.dart';

import 'app_strings.dart';
import 'net_libs_page/net_libs_page.dart';

void main() => runApp(new MyApp());

class MyApp extends StatelessWidget 
  // This widget is the root of your application.
  @override
  Widget build(BuildContext context) 
    return MaterialApp(
      localizationsDelegates: [
        // ... app-specific localization delegate[s] here
        AppLocalizationsDelegate(),
        GlobalMaterialLocalizations.delegate,
        GlobalWidgetsLocalizations.delegate,
        //FallbackMaterialLocalisationsDelegate(),
      ],
      supportedLocales: [
        Locale('en', 'US'), // English
        Locale('es', 'ES'), // Spanish
        Locale('pl', 'PL'),
        // ... other locales the app supports
      ],
      title: '@Voice Network Library', //_strings.title,
      theme: ThemeData(
        // This is the theme of your application.
        //
        // Try running your application with "flutter run". You'll see the
        // application has a blue toolbar. Then, without quitting the app, try
        // changing the primarySwatch below to Colors.green and then invoke
        // "hot reload" (press "r" in the console where you ran "flutter run",
        // or press Run > Flutter Hot Reload in IntelliJ). Notice that the
        // counter didn't reset back to zero; the application is not restarted.
        primarySwatch: Colors.indigo,
      ),
      home: NetLibsPage(),
    );
  

颤振医生输出:

Doctor summary (to see all details, run flutter doctor -v):
[√] Flutter (Channel master, v0.4.5-pre.52, on Microsoft Windows [Version 10.0.16299.431], locale en-US)
[√] Android toolchain - develop for Android devices (Android SDK 27.0.3)
[√] Android Studio (version 3.1)
[!] IntelliJ IDEA Ultimate Edition (version 2018.1)
    X Flutter plugin not installed; this adds Flutter specific functionality.
    X Dart plugin not installed; this adds Dart specific functionality.
[!] VS Code, 32-bit edition (version 1.19.3)
[√] Connected devices (1 available)

! Doctor found issues in 2 categories.

【问题讨论】:

请从您的lib/main.dart添加导入 感谢您的建议,君特!唯一不存在的是 import 'package:flutter_localizations/flutter_localizations.dart';并且 Android Studio 表明它没有在断点不起作用的模块中使用。添加它并没有改变任何东西。 请将来自lib/main.dart 的导入添加到您的问题中。也是flutter doctor的输出。 刚刚添加,感谢您的帮助。我还做了什么:创建了新的示例应用程序 - 断点在其中工作。比较 build.gradle - 所有这些,AndroidManifest.xml,pubspec.yaml - 没有重要区别...... 关闭和重新打开 VS Code 对我有用。 【参考方案1】:

不要在 lib/main.dart 中使用相对导入

import 'app_strings.dart';
import 'net_libs_page/net_libs_page.dart';

改为使用

import 'package:my_app/app_strings.dart';
import 'package:my_app/net_libs_page/net_libs_page.dart';

其中my_apppubspec.yamlname: 字段中的内容。

跟踪此问题https://github.com/dart-lang/sdk/issues/33076

【讨论】:

哇!有用!永远不会想到这一点,特别是因为它是这样持续了几个星期并且工作正常,昨天才停止(在代码变大之后???)我认为每个初学 Flutter 的程序员也应该得到一根魔杖和指令来喃喃自语尝试运行他的应用程序时出现“abracadabra”...再次感谢您的帮助!!! 很高兴听到 :) 这有点不幸。 Flutter 使用 Dart 的方式与最初旨在让开发人员更容易使用的方式有所不同,但这需要对语言进行更改,但由于 Dart 2 的工作,我们存在一些资源短缺。这有望很快得到解决。 哇。这绝对应该是一个错误报告。对我也突然停止了 @alltooconfusingthereforesleep 我将链接添加到我的答案中。【参考方案2】:

似乎导入路径中路径的大写导致断点停止工作。即:

package:myApp/model/myWidget/myWidget.dart

package:myApp/model/MyWidget/MyWidget.dart

对于调试来说是不一样的。有趣的是,应用程序启动时路径大小写不正确。

【讨论】:

这是在 MacO 上吗?请注意,macos 有一个奇怪的特性,它不关心路径大小写。【参考方案3】:

对于那些在 VS Code 上使用 Flutter 的人,

请查看您对 dart 文件名所做的更改。

我在 VS Code 上遇到了同样的问题。它没有显示编译错误,工作正常但断点不起作用。

在进行更改时,我查看了一些我更改为的 dart 文件。

例如,我将“Home.dart”更改为“home.dart”,等等。

即使您更改文件名,VS Code 有时也不会反映更改,

这意味着即使您将 Home.dart 更改为 home.dart,

左侧面板显示 home.dart,而右侧面板显示您打开的文件仍然显示“Home.dart”

下面的图片解释了我刚才提到的所有内容。

解决方案是简单地关闭你打开的所有 dart 文件,关闭 VS Code,然后重新打开它。这对我有用。

【讨论】:

【参考方案4】:

对我有用的解决方案:

简单

卸载你的 Flutter 应用

从真实设备(在设备上手动)并再次尝试调试(!)

【讨论】:

以上是关于Flutter dart 调试器断点停止工作的主要内容,如果未能解决你的问题,请参考以下文章

Xdebug 停止工作并且无法在断点处停止

android 调试器不会在断点处停止

远程调试不会在断点处停止

检查 Visual C++ 断点(不停止)

调试器不会在 VS Code for Python 中的断点处停止

Visual Studio 2010 C# 调试器不会在新断点处停止