1.5 工具与调试
调试 Flutter 应用
有很多工具和特性可以帮助调试 Flutter 应用程序,如下列举了一些:
开发者工具,是一套运行在浏览器的性能及分析工具。
Android Studio/IntelliJ 和 VS Code(借助 Flutter 和 Dart 插件)支持内置的源代码调试器,可以设置断点,单步调试,检查数值。
Flutter inspector,是开发者工具提供的 widget 检查器,也可直接在 Android Studio 和 IntelliJ 中使用(借助 Flutter 插件)。检查器可以可视化展现 widget 树,查看单个 widget 及其属性值,开启性能图层,等等。
开发者工具
DevTools
要调试及分析应用,开发者工具可能是你的首选。开发者工具运行在浏览器,支持以下特性:
源代码调试器
widget 检查器,展示可视化的 widget 树; “widget select” 模式,在应用中选择一个 widget,会在 widget 树直接定位到它的位置。
内存分析
时间线视图,支持跟踪,导入及导出跟踪信息
-
日志视图
logging view
如果你在 debug 模式 或 profile 模式 运行,那么可以在浏览器打开开发者工具连接到你的应用。开发者工具不能用在以 release 模式 编译的应用,因为调试和分析信息都被删除了。
如果你要用开发者工具分析应用,需确保使用 profile 模式。否则,分析的主要输出将会是用于验证框架中各种不变式的调试断言(查看 debug 模式断言)。
想获取更多信息,请查看 开发者工具 文档。
设置断点
要设置断点,可以直接在 IDE 或编辑器(比如 Android Studio/IntelliJ 和 VS Code)、开发者工具调试器 设置,或者 通过编码的方式设置。
Dart 分析器
The Dart analyzer
如果你使用的是 Flutter 推荐的 IDE 或编辑器,则自带的 Dart 分析器默认会检查代码,并发现可能的错误。
如果你使用命令行,则可以使用 flutter analyze
检查代码。
Dart 分析器非常依赖你在代码中添加的类型注解,以帮助跟踪问题。建议您在各个地方都加上注解(避免 var
,无类型参数,无类型 list 字面量,等等),因为这是跟踪问题最快且最不痛苦的方式。
日志
Logging
另一个有用的调试工具是日志。通过 编码 配置日志,然后在开发者工具中的 日志视图 或控制台查看输出。
调试应用层
Flutter 采用分层架构,包括 widget、渲染和绘制等层。想获取更多信息和视频,请查看 GitHub wiki 上的 The Framework architecture,和社区文章 The Layer Cake。
Flutter widget 检查器提供了 widget 树的视觉展现,如果你想要更多细节,或关于 wiget、层级或渲染树的详尽文本转储,请查看 添加输出代码的方式调试 Flutter 应用 页面的 调试标志:应用层 部分。
Debug 模式断言
Debug mode assertions
在开发过程中,强烈建议您使用 Flutter 的 debug 模式。如果你是用 Android Studio 的 bug 图标运行,或者在命令行执行 flutter run
,则默认会使用 debug 模式。有些工具通过 --enable-assets
命令行标志可以支持断言语句。
在此模式,Dart 断言语句被开启,Flutter 框架在执行时会计算每一个遇到的断言语句的参数,当结果是 false 时抛出异常。如此一来,开发者可以控制不变式检查的开启或关闭,相应的性能损耗将只发生在调试期间。
有不变式被违反时,它会被报告给控制台,并携带一些帮助跟踪问题源的上下文信息。
想获取更多信息,请查看 探索 Dart 语言 中的 [断言][Assert] 部分。
For more information, see Assert
in the Dart language tour.