CnOps 智能运维与可观测社区
首页开源项目实践文章视频课程常见问答开发者工具STAROps 专题
导航菜单
首页开源项目实践文章视频课程常见问答开发者工具STAROps 专题

CnOps 智能运维与可观测社区

愿景

CnOps 智能运维与可观测社区是一个以"智能运维与可观测"为核心的开放、包容、分享的技术社区,旨在聚集运维专家、开发者和爱好者,共同探讨、学习和分享可观测最佳实践与最新技术,与众多技术社区合作互动,共同探讨交叉领域的技术挑战,推动可观测领域的创新与进步。

内容社区

  • 实践文章
  • 视频课程
  • 开源项目
  • 常见问答
  • 开发者工具

友情链接

  • Prometheus
  • Grafana Lab
  • OpenTelemetry
  • LoongCollector

关注我们

阿里云云原生公众号阿里云云原生
阿里云可观测公众号阿里云可观测

Copyright © 2026 CnOps 社区. All rights reserved.

首页问答RUM Android SDK 如何采集 Native 崩溃和 ANR?

RUM Android SDK 如何采集 Native 崩溃和 ANR?

#RUM#Native崩溃#ANR#信号量#SIGQUIT

agenticOps | 2026-05-23

Native 崩溃和 ANR 的采集采用基于 Native 信号量的方案。Android 应用可以包含 C/C++ 代码(Native 代码),当这些代码出现访问无效内存地址、执行非法指令等严重错误时,操作系统会向进程发送 POSIX 信号(如 SIGSEGV 代表段错误、SIGILL 代表非法指令),默认行为是立即终止应用即闪退。同时,Android 的所有 UI 操作和大部分应用层回调必须在主线程执行,若主线程被耗时操作阻塞,无法在规定时间内(输入事件 5 秒、广播 10 秒)响应,系统就会判定应用无响应即 ANR。

技术原理是:在应用初始化时注册一个自定义的信号处理器来接管系统默认处理器。当捕获到崩溃信号或在系统判定 ANR 的精确时刻,它不会立即退出,而是先生成一个包含详细崩溃信息(线程堆栈、寄存器状态、加载的库等)的崩溃信息文件,然后再执行默认的崩溃流程。

具体采集能力:

  • Native 崩溃采集:通过监听 Native 信号量,在 APP 崩溃时采集 Native 堆栈、CPU、寄存器等生成快照文件,在应用下次启动时扫描并解析崩溃信息并上报。
  • ANR 采集:利用系统发送 SIGQUIT 信号这一机制,通过在 Native 层使用 sigaction 函数监听此信号,在系统判定 ANR 的精确时刻获得通知,从而触发信息收集流程。

推荐文章

超过 2000+ 位开发者正在阅读

给 OpenClaw 加上企业级 Memory

给 OpenClaw 加上企业级 Memory

4646 阅读

阿里云 STAROps 全域智能运维平台发布!

阿里云 STAROps 全域智能运维平台发布!

3453 阅读

阿里云正式发布 RCA Benchmark

阿里云正式发布 RCA Benchmark

2716 阅读

推荐视频

UModel 最佳实践 Vol.1 UModel 数据建模全景解读

UModel 最佳实践 Vol.1 UModel 数据建模全景解读

3854 观看50:35
云监控2.0全景:可观测范式升级与智能运维蓝图

云监控2.0全景:可观测范式升级与智能运维蓝图

2532 观看41:06

推荐工具

精选可观测领域开发者工具

云监

云监控 2.0 沙箱体验

7483 使用

免费

免费网络拨测工具

2746 使用