【问题标题】:How to get full stack trace of Dart Isolate error如何获得 Dart Isolate 错误的完整堆栈跟踪
【发布时间】:2021-08-16 14:46:26
【问题描述】:

我在 Android 设备上构建 Flutter 应用时遇到问题。 每当我尝试使用新的调试版本覆盖从 Google Play 商店下载的当前版本时,就会出现以下错误。

但是很难找到问题出在哪里,因为我看不到整个堆栈跟踪。

每当发生此错误时,Google Play Store 中的版本都不会被我的调试版本替换,Flutter 框架甚至没有“启动”,我无法使用热重载等等。

我已经尝试在详细模式下运行,但我仍然没有得到完整的堆栈跟踪。

这是我在控制台中得到的:

I/flutter (16724): 7 has been spawned
I/flutter (16724): initialized
I/flutter (16724): inserted task with number -9007199254740992
I/flutter (16724): isolate with task number -9007199254740992 begins work
I/flutter (16724): inserted task with number -9007199254740991
I/flutter (16724): isolate with task number -9007199254740991 begins work
E/flutter (16724): [ERROR:flutter/runtime/dart_isolate.cc(1137)] Unhandled exception:
E/flutter (16724): Null check operator used on a null value
E/flutter (16724): Warning: This VM has been configured to produce stack traces that violate the Dart standard.
E/flutter (16724): *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** ***
E/flutter (16724): pid: 16724, tid: 16793, name DartWorker
E/flutter (16724): build_id: '45d66c9fd13d70ae4850c9cfde54f16d'
E/flutter (16724): isolate_dso_base: 7864010000, vm_dso_base: 7864010000
E/flutter (16724): isolate_instructions: 786401f000, vm_instructions: 7864012000
E/flutter (16724):     #00 abs 000000786408b66f virt 000000000007b66f _kDartIsolateSnapshotInstructions+0x6c66f
E/flutter (16724):     #01 abs 000000786408af93 virt 000000000007af93 _kDartIsolateSnapshotInstructions+0x6bf93
E/flutter (16724):     #02 abs 00000078645764db virt 00000000005664db _kDartIsolateSnapshotInstructions+0x5574db
E/flutter (16724):     #03 abs 00000078641bc64f virt 00000000001ac64f _kDartIsolateSnapshotInstructions+0x19d64f
E/flutter (16724):     #04 abs 00000078641bc58f virt 00000000001ac58f _kDartIsolateSnapshotInstructions+0x19d58f
E/flutter (16724):     #05 abs 00000078641bbe77 virt 00000000001abe77 _kDartIsolateSnapshotInstructions+0x19ce77
E/flutter (16724):     #06 abs 00000078641bc73b virt 00000000001ac73b _kDartIsolateSnapshotInstructions+0x19d73b
E/flutter (16724):     #07 abs 00000078641bb8af virt 00000000001ab8af _kDartIsolateSnapshotInstructions+0x19c8af
E/flutter (16724):     #08 abs 00000078641bd513 virt 00000000001ad513 _kDartIsolateSnapshotInstructions+0x19e513
E/flutter (16724): <asynchronous suspension>
E/flutter (16724):     #09 abs 000000786422e3b7 virt 000000000021e3b7 _kDartIsolateSnapshotInstructions+0x20f3b7
E/flutter (16724): <asynchronous suspension>
E/flutter (16724):     #10 abs 000000786422dda7 virt 000000000021dda7 _kDartIsolateSnapshotInstructions+0x20eda7
E/flutter (16724): <asynchronous suspension>
E/flutter (16724):     #11 abs 000000786422efcf virt 000000000021efcf _kDartIsolateSnapshotInstructions+0x20ffcf
E/flutter (16724): <asynchronous suspension>
E/flutter (16724):     #12 abs 00000078641c0193 virt 00000000001b0193 _kDartIsolateSnapshotInstructions+0x1a1193
E/flutter (16724): <asynchronous suspension>

这也是我的颤振医生的结果,以防有帮助:

Doctor summary (to see all details, run flutter doctor -v):
[✓] Flutter (Channel stable, 2.2.3, on macOS 11.3 20E232 darwin-x64, locale en-DE)
[✓] Android toolchain - develop for Android devices (Android SDK version 30.0.3)
[✓] Xcode - develop for iOS and macOS
[✓] Chrome - develop for the web
[✓] Android Studio (version 4.2)
[✓] Connected device (2 available)

• No issues found!

谢谢,任何信息都会有所帮助。

【问题讨论】:

    标签: flutter dart dart-isolates


    【解决方案1】:

    isolate内部的空指针解引用可能是因为isolate不支持平台通道:

    https://github.com/flutter/flutter/issues/13937

    很遗憾,没有足够的日志来证明。

    【讨论】:

      【解决方案2】:

      为将来可能面临同样问题的人回答我自己的问题。

      TL;DR

      flutter logs 似乎显示了原始错误的完整堆栈跟踪。

      以下是在这种特殊情况下的分步操作:

      1. 使用flutter build apk 构建apk
      2. 通过adb 安装它adb install ./build/app/outputs/flutter-apk/app-release.apk
      3. 运行flutter logs,并在Android设备中启动应用程序

      完整的堆栈跟踪如下所示:

      E/flutter (14880): [ERROR:flutter/runtime/dart_isolate.cc(1137)] Unhandled exception:
      E/flutter (14880): Null check operator used on a null value
      E/flutter (14880): #0      MethodChannel.binaryMessenger (package:flutter/src/services/platform_channel.dart:142)
      E/flutter (14880): #1      MethodChannel._invokeMethod (package:flutter/src/services/platform_channel.dart:148)
      E/flutter (14880): #2      MethodChannel.invokeMethod (package:flutter/src/services/platform_channel.dart:331)
      E/flutter (14880): #3      new FirebasePerformance._ (package:firebase_performance/src/firebase_performance.dart:16)
      E/flutter (14880): #4      FirebasePerformance.instance (package:firebase_performance/src/firebase_performance.dart:32)
      E/flutter (14880): #5      Performance.traceFunction (package:app/resources/performance.dart)
      E/flutter (14880): #6      Performance.traceFuture (package:app/resources/performance.dart:13)
      

      【讨论】:

        猜你喜欢
        • 2020-12-03
        • 2022-07-07
        • 2021-08-18
        • 1970-01-01
        • 1970-01-01
        • 2018-09-06
        • 2013-11-16
        • 2011-11-11
        • 1970-01-01
        相关资源
        最近更新 更多