崩溃分析

本文档指导开发者完成阿里云移动监控 Flutter SDK 的崩溃分析的功能验证。

1. 异常上报

  1. 编写测试代码,模拟触发 Flutter 异常。例如:

    Future<void>.delayed(const Duration(milliseconds: 10), () {
      throw StateError('Test Error');
    });
  2. 触发异常后,大概2分钟后在控制台-崩溃分析-自定义异常页面查看

    说明
    • 异常数据从采集到上传到控制台显示,存在大约2~3分钟延迟;

    • 如 SDK 配置异常处理策略是记录,则应用重新启动后上传异常数据;

    image

重要

如果应用做了混淆或调试符号剥离,请自行下载原始异常堆栈在本地符号化,参考命令:

flutter symbolize -i ./stacktrace.txt -d ./app.ios-arm64.symbols

2. 自定义维度

  1. 编写测试代码,调用 SDK 自定义维度接口。例如:

    await Apm.setCustomProperty("role", 1);
  2. 调用自定义维度,然后触发异常,大概2分钟后在控制台-崩溃分析-自定义异常页面查看,如下图红框所示:image

3. 自定义异常上报

  1. 编写测试代码,调用 SDK 自定义异常接口。例如:

    try {
      throw StateError('Your Exception Message');
    } catch (error, stackTrace) {
      await CrashAnalysis.recordException(error, stackTrace: stackTrace);
    }
  2. 调用自定义异常接口后,大概2分钟后在控制台-崩溃分析-自定义异常页面查看,如下图红框所示:image

    说明

    在“是否自定义”选项中,显示为“是”的异常,特指由开发者通过 SDK 自定义接口主动上报的异常,以区别于 SDK 自动捕获的异常。

4. 监控 Isolate 异常

  1. 编写测试代码,调用 SDK 接口。例如:

    final isolate = await Isolate.spawn(_isolateEntry, SendPort());
    CrashAnalysis.watchIsolate(isolate);
    
    void _isolateEntry(SendPort sendPort) {
      sendPort.send('ready');
    }
  2. 调用自定义异常模型接口后,大概2分钟后在控制台-崩溃分析-自定义异常页面查看:image