如果我正确理解默认情况下,flutter test
将在Dart VM上以JIT运行,而发行模式使用AOT编译器来编写本机代码。
我(认为)只有在AOT模式(发行版和配置文件)下才会发生崩溃,当我可以通过在AOT /配置文件模式下运行代码来隔离它时,调试和重现它会更容易。
那么我如何在AOT模式下运行测试(或至少代码片段)? (我不太在意它是否在实际的iOS或Android设备上运行,还是在开发机器或模拟器上执行。
(我发现了an article which seems to describe the compilation process,但确实参与其中。有没有更简单的测试方法?)
答案 0 :(得分:0)
我找到了一个相当简单的解决方案documented on the dart website。从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$