Flashduty Docs
中文
EnglishRoadmapAPI官网控制台
中文
EnglishRoadmapAPI官网控制台
  1. 异常上报
  • 简介
  • On-call
    • 快速开始
      • 快速开始
      • 常见问题
      • 产品对比
    • 故障管理
      • 什么是故障
      • 检索与查看故障
      • 处理与更新故障
      • 升级与分派故障
      • 自定义字段
      • 自定义操作
      • 了解降噪过程
      • 了解历史故障
      • 了解新奇故障
      • 状态页
    • 配置On-call
      • 协作空间管理
      • 多种方式接入告警
      • 配置路由规则
      • 配置标签增强
      • 配置告警降噪
      • 配置分派策略
      • 故障静默与抑制
      • 配置值班规则
      • 配置通知模板
      • 配置服务日历
      • 配置个人信息
      • 配置过滤条件
      • 通知配置
      • 告警处理 pipeline
    • 高级功能
      • 引用变量
      • 动态分派
      • 分析数据
      • 作战室
    • 集成引导
      • 告警集成
        • 邮件 Email 集成指引
        • 夜莺 Flashcat 集成指引
        • Prometheus 集成指引
        • 标准告警事件集成指引
        • Grafana 集成指引
        • Zabbix 集成指引
        • Uptime Kuma 集成指引
        • 阿里云 ARMS 集成指引
        • 阿里云监控 CM 事件集成指引
        • 阿里云监控 CM 指标集成指引
        • 阿里云 SLS 集成指引
        • AWS CloudWatch 集成指引
        • Azure Monitor 集成指引
        • 百度云监控 BCM 集成指引
        • 华为云监控 CES 集成指引
        • 腾讯云 CLS 集成指引
        • 腾讯云监控 CM 集成指引
        • 腾讯云 Event Bridge 集成指引
        • Influxdata 集成指引
        • Open Falcon 集成指引
        • Pagerduty 集成指引
        • 蓝鲸智云集成指引
        • OceanBase 集成指引
        • Graylog 集成指引
        • Skywalking 集成指引
        • Sentry 集成指引
        • 监控宝告警集成指引
        • AWS EventBridge 集成指引
        • Dynatrace 集成指引
        • 华为云 LTS 集成指引
        • GoogleCloud 集成指引
        • Splunk 集成指引
        • AppDynamics 集成指引
        • SolarWinds 集成指引
        • 火山引擎CM 指标集成指引
        • 火山引擎CM 事件集成指引
        • 火山引擎日志服务 TLS 集成指引
        • Opmanager 告警事件
        • Meraki 告警事件
        • 天翼云告警集成
        • 观测云告警事件
        • zilliz 告警事件
        • 华为云 APM 告警事件
        • zstack 告警事件
        • Keep 告警集成指引
        • ElastAlert2 告警集成
        • Monit 告警集成指引
        • RUM 告警集成指引
      • 即时消息
        • 飞书 Lark 集成指引
        • 钉钉 Dingtalk 集成指引
        • 企业微信 Wecom 集成指引
        • Slack 集成指引
        • Microsoft Teams 集成指引
      • 单点登录
        • Authing 集成指引
        • Keycloak 集成指引
        • OpenLDAP 集成指引
      • Webhooks
        • 告警 webhook
        • 故障 webhook
        • 自定义操作
        • Jira 同步
        • ServiceNow 同步
        • ServiceDesk Plus 同步
      • 变更集成
        • 标准变更事件集成指引
      • 其他集成
        • Link 集成
    • 最佳实践
      • 基于标签增强实现动态分派
  • RUM
    • 快速开始
      • 入门介绍
      • 快速开始
      • 应用管理
    • SDK接入
      • Web
        • SDK接入
        • 高级配置
        • 数据收集
        • 兼容性
        • 常见问题
      • Android
        • SDK接入
        • 高级配置
        • 数据收集
        • 兼容性
      • iOS
        • SDK接入
        • 高级配置
        • 数据收集
        • 兼容性
    • 分析看板
      • Web
      • Native
    • 性能监控
      • 概览
      • 指标上报
      • 诊断优化
      • 性能分析
    • 查看器
      • 概览
      • 数据查询
    • 异常追踪
      • 概览
      • 异常聚合
      • Issue状态
      • 异常查看
      • 源码映射
      • Issue告警
      • 异常上报
        • iOS
        • Android
        • Web
    • 会话重放
      • 概览
      • SDK配置
      • 查看 RUM 会话重放记录
      • 隐私保护说明
    • 最佳实践
      • 分布式追踪
    • 其他
      • 术语说明
      • 数据收集
      • 数据安全
  • Moniors
    • 快速开始
      • 产品介绍
      • 快速开始
    • 告警规则配置
      • Prometheus
      • ElasticSearch
      • Loki
      • ClickHouse
      • MySQL
      • Oracle
      • PostgreSQL
      • Aliyun SLS
      • VictoriaLogs
    • 常见问题
      • 常见问题
  • 平台功能
    • 团队和成员
    • 了解权限设计
    • 配置单点登录
  • 服务协议
    • 服务条款
    • 用户协议/隐私政策
    • SLA承诺
    • 数据安全
中文
EnglishRoadmapAPI官网控制台
中文
EnglishRoadmapAPI官网控制台
  1. 异常上报

iOS

iOS 异常上报#

概述#

本文档介绍 Flashcat iOS RUM SDK 的异常捕获机制,包括应用崩溃、App Hangs(应用挂起)、Watchdog 终止、手动错误上报以及 dSYM 符号文件上传。

异常类型#

Flashcat iOS RUM 可以监控以下类型的异常:

应用崩溃#

SDK 自动捕获未处理的异常和致命信号,包括:
未捕获的 Swift/Objective-C 异常
致命信号(如 SIGSEGV、SIGABRT)
Mach 异常

App Hangs(应用挂起)#

当主线程被阻塞超过指定阈值时,SDK 会检测并报告 App Hang 事件,帮助您发现影响用户体验的卡顿问题。

Watchdog 终止#

iOS 系统的 Watchdog 机制会终止长时间无响应的应用。SDK 可以检测这类终止并报告为崩溃事件。

自定义错误#

除了自动捕获的异常外,您还可以使用 RUM SDK 手动上报自定义异常,用于跟踪业务逻辑错误等特定问题。

配置崩溃报告#

添加 Crash Reporting 模块#

要启用崩溃报告功能,需要添加 FlashcatCrashReporting 模块。

Swift Package Manager#

在 Xcode 中添加包依赖时,同时添加以下模块:
FlashcatCore:核心 SDK
FlashcatRUM:RUM 功能模块
FlashcatCrashReporting:崩溃报告模块

初始化崩溃报告#

在 SDK 初始化后启用崩溃报告:
提示
建议在 application(_:didFinishLaunchingWithOptions:) 中尽早初始化 SDK 和崩溃报告,以确保能捕获应用启动阶段的崩溃。

配置 App Hangs 检测#

App Hang 是指主线程被阻塞导致应用无法响应用户输入的情况。SDK 可以检测这类问题并上报。

启用 App Hangs 追踪#

在 RUM 配置中设置 appHangThreshold 参数:

App Hang 阈值说明#

阈值设置描述
0.25250 毫秒,检测轻微卡顿
1.01 秒,检测明显卡顿
nil禁用 App Hang 检测(默认)
提示
设置过低的阈值可能会产生大量报告,建议根据应用实际情况调整。
如果 App Hang 导致应用被 Watchdog 终止,该事件会被标记为崩溃类型。

配置 Watchdog 终止追踪#

iOS 的 Watchdog 机制会终止长时间无响应的应用。SDK 可以在下次应用启动时检测并报告这类终止。

启用 Watchdog 终止追踪#

Watchdog 终止检测条件#

SDK 会在以下条件全部满足时将上次应用终止判定为 Watchdog 终止:
应用不是被用户强制退出
上次运行未发生崩溃或 fatal error
应用未进行升级
应用在前台且正在响应事件

手动错误上报#

通过 addError API,您可以手动上报已处理的异常、自定义错误或其他未被自动捕获的错误。

上报错误示例#

错误来源类型#

来源描述
.source源码错误
.network网络错误
.webviewWebView 错误
.console控制台错误
.custom自定义错误

上报异常对象示例#

获取符号化的堆栈跟踪#

崩溃报告中的堆栈默认为内存地址。通过上传 dSYM 符号文件,可以将这些地址转换为可读的函数名、文件名和行号。

什么是 dSYM 文件#

dSYM(Debug Symbol)文件包含了应用的调试符号信息,用于将崩溃堆栈中的内存地址映射到源代码位置。

使用命令行工具上传 dSYM#

步骤 1:安装 flashcat-ci 工具#

步骤 2:上传 dSYM 文件#

支持的文件格式#

.dSYM 目录
.dSYM.zip 压缩包
包含多个 dSYM 的 .zip 压缩包

在 CI/CD 中集成 dSYM 上传#

Xcode Build Phase 脚本#

在 Xcode 项目的 Build Phases 中添加 Run Script:

Fastlane 集成#

在 Fastfile 中添加上传步骤:

Bitcode 应用的 dSYM#

如果您的应用启用了 Bitcode,Apple 会在 App Store 处理时重新编译应用,生成新的 dSYM 文件。您需要从 App Store Connect 下载这些 dSYM 并上传。

下载 Bitcode dSYM#

1.
登录 App Store Connect
2.
进入您的应用 > 活动 > 选择构建版本
3.
点击「下载 dSYM」

dSYM 文件限制#

每个 dSYM 文件大小限制为 2 GB
仅真实设备上的崩溃支持符号化,模拟器生成的崩溃不支持

追踪后台事件#

默认情况下,只有在视图处于活动状态时发生的崩溃才会被追踪。如果您希望追踪应用在后台时发生的崩溃,可以启用后台事件追踪:
警告
追踪后台事件可能会产生额外的会话,这可能会影响计费。如有疑问,请联系 Flashcat 支持团队。

限制与注意事项#

崩溃检测限制#

SDK 初始化时机:崩溃只有在 SDK 和 CrashReporting.enable() 调用之后才能被检测到。建议尽早初始化。
调试器干扰:在 Xcode 调试器连接时,崩溃会被调试器捕获而非 SDK。测试崩溃报告时,请在不连接调试器的情况下运行应用。
崩溃报告上传时机:崩溃报告会在应用下次启动时上传,因此崩溃发生后需要重新启动应用才能看到报告。

符号化限制#

仅真实设备上的崩溃支持符号化,模拟器生成的崩溃不支持。
每个发布版本都需要上传对应的 dSYM 文件。
如果使用 Bitcode,需要从 App Store Connect 下载并上传重新生成的 dSYM。

App Hang 检测限制#

App Hang 检测仅在应用处于前台时有效。
检测精度取决于阈值设置,过低的阈值可能产生大量误报。

测试验证#

验证崩溃报告#

1.
不连接调试器运行应用:从 Xcode 停止应用,然后从设备上直接启动。
2.
触发测试崩溃:
3.
重启应用:崩溃发生后,从设备上重新启动应用,等待 SDK 上传崩溃报告。
4.
查看报告:在 Flashcat 控制台的异常追踪模块中查看崩溃报告。

验证 App Hang#

1.
在主线程执行耗时操作:
2.
触发该操作后尝试与应用交互。
3.
检查 Flashcat 控制台是否收到 App Hang 报告。

验证符号化#

1.
确保已上传对应版本的 dSYM 文件。
2.
触发崩溃并查看报告。
3.
确认堆栈中显示的是函数名、文件名和行号,而非纯内存地址。

错误数据结构#

每条错误数据包含以下属性:
属性类型描述
error.sourcestring错误来源(如 source、network、custom)
error.typestring错误类型(如 NSException、Signal)
error.messagestring错误消息
error.stackstring错误堆栈跟踪
error.is_crashboolean是否为崩溃
contextObject自定义上下文信息,通过 addError 的 attributes 传入

最佳实践#

1.
尽早初始化 SDK:在 application(_:didFinishLaunchingWithOptions:) 中尽早调用 Flashcat.initialize() 和 CrashReporting.enable()。
2.
正确上传 dSYM:
为每个发布版本上传对应的 dSYM 文件
在 CI/CD 流程中集成 dSYM 上传
如果使用 Bitcode,及时从 App Store Connect 下载并上传 dSYM
3.
合理设置 App Hang 阈值:根据应用性能要求设置合适的阈值,避免过多误报。
4.
丰富错误上下文:在手动上报错误时,附加业务相关的上下文信息(如用户 ID、操作类型)。
5.
测试时断开调试器:验证崩溃报告功能时,确保不连接 Xcode 调试器。

下一步#

查看异常
iOS SDK 高级配置

添加官方技术支持微信

在这里,获得使用上的任何帮助,快速上手FlashDuty

微信扫码交流
修改于 2026-01-16 09:43:20
上一页
Issue告警
下一页
Android
Built with