unit-testing - 在 AOT/release 或 profile 模式下运行颤振/飞镖测试?
问题描述
如果我理解正确,默认情况下flutter test
将在 Dart VM 上使用 JIT 运行,而发布模式使用 AOT 编译器编译本机代码。我(想)有一个崩溃,它只发生在 AOT 模式(发布和配置文件),当我可以通过在 AOT/配置文件模式下运行代码来隔离它时,调试和重现它会更容易。
那么如何在 AOT 模式下运行测试(或至少是代码片段)?(我真的不在乎它是在实际的 iOS 或 Android 设备上运行,还是在开发机器或模拟器上执行。
(我发现一篇似乎描述了编译过程的文章,但涉及的内容相当多。有没有更简单的测试方法?)
解决方案
我找到了一个相当简单的解决方案,该解决方案记录在 dart 网站上。从 Dart 2.3 开始,SDK 捆绑了一个dart2aot
并dartaotruntime
捆绑在一起。这允许简单的执行,我能够重现我的崩溃。
Herbys-MacBook-Pro-2017:migrate$ dart2aot migrate_aot_test.dart migrate_aot_test.dart.aot
Herbys-MacBook-Pro-2017:migrate$ dartaotruntime migrate_aot_test.dart.aot
[...]
===== CRASH =====
si_signo=Segmentation fault: 11(11), si_code=1, si_addr=0x1061000410f
Abort trap: 6
Herbys-MacBook-Pro-2017:migrate$
推荐阅读
- node.js - Lambda 容器会自动销毁 Postgres 连接吗?
- javascript - 在 Typescript 中,Object.prototype 函数可以返回子类型实例吗?
- html - 如何在两列之间有固定的间隔?
- swift - Firebase Observer 中存储内容的生命周期
- node.js - 将 req.user 传递给 graphQL
- android - 为什么来自 xml Web 服务的字符串在 Android TextView 中不显示新行?
- mongodb - 如何通过删除 mongoDB 中的时间来更新日期字段?
- iphone - iOS 12.1.2 Xcode 版本 10.0 (10A255) 无法加载构建到 iPhone 6
- javascript - Redux 状态未在 reducer 中按预期构建
- git - 列出 Git 存储库中特定用户更改的所有文件