android 之 Tombstone

Android 系统中的 Tombstone 是记录 Native 层崩溃信息的关键日志文件,当应用或系统服务因严重错误(如内存访问异常、空指针解引用等)崩溃时自动生成。以下是其核心机制与分析方法详解:

一、Tombstone 的生成机制

  1. 触发条件

    • 当 Native 代码(C/C++)发生致命错误时(如 SIGSEGV段错误、SIGABRT异常终止),Linux 内核会发送信号(Signal)给进程。
    • 系统注册的 debuggerd 守护进程捕获信号,收集崩溃现场信息并写入 /data/tombstones/ 目录,生成 tombstone_XX 文件。
  2. 文件存储

    • 路径:/data/tombstones/tombstone_00, tombstone_01 等(需 root 权限访问)。
    • 若无 root 权限,可通过 adb bugreport 导出完整报告后提取。

二、Tombstone 文件核心内容解析

文件包含以下关键信息(以典型字段为例):

plaintext 复制代码
Build fingerprint: 'Android/aosp_device_model'  # 设备固件标识
ABI: 'arm64'                                    # CPU架构
pid: 1234, tid: 5678, name: example_thread      # 进程/线程ID及名称
signal 11 (SIGSEGV), code 1 (SEGV_MAPERR), fault addr 0x0  # 崩溃信号类型和地址

backtrace:                                      # 崩溃堆栈
  #00 pc 00012345 /system/lib/libexample.so (functionA+0x10)
  #01 pc 00056789 /system/lib/libexample.so (functionB+0x20)

memory map:                                     # 内存映射
  00008000-00009000 r-xp 00000000 00:00 0 [heap]
  ffff0000-ffff1000 r-xp 00000000 00:00 0 [vectors]
关键字段说明
  • signalfault addr
    • SIGSEGV(信号11):通常由空指针或内存越界引发,fault addr 0x0 表示空指针解引用。
    • SIGABRT(信号6):断言失败或主动调用 abort()
  • backtrace
    堆栈调用链,pc 后为崩溃指令的相对地址(需结合符号表解析)。
  • memory map
    显示进程加载的模块地址范围,用于验证崩溃地址是否合法(如 0x0 属于非法地址)。

参考博客
android tombstone log分析
Android开发太难了,Native Crash的一切!

相关推荐
程序员陆业聪13 小时前
从 OpenClaw 到 Android:Harness Engineering 是怎么让 Agent 变得可用的
android
hnlgzb15 小时前
常见的Android Jetpack库会有哪些?这些库中又有哪些常用类的?
android·android jetpack
钛态18 小时前
Flutter 三方库 http_mock_adapter — 赋能鸿蒙应用开发的高效率网络接口 Mock 与自动化测试注入引擎(适配鸿蒙 HarmonyOS Next ohos)
android·网络协议·flutter·http·华为·中间件·harmonyos
王码码203518 小时前
Flutter for OpenHarmony:Flutter 三方库 algoliasearch 毫秒级云端搜索体验(云原生搜索引擎)
android·前端·git·flutter·搜索引擎·云原生·harmonyos
左手厨刀右手茼蒿18 小时前
Flutter for OpenHarmony: Flutter 三方库 shamsi_date 助力鸿蒙应用精准适配波斯历法(中东出海必备)
android·flutter·ui·华为·自动化·harmonyos
代码飞天18 小时前
wireshark的高级使用
android·java·wireshark
2501_9159184119 小时前
苹果App Store上架审核卡住原因分析与解决方案指南
android·ios·小程序·https·uni-app·iphone·webview
skiy20 小时前
MySQL Workbench菜单汉化为中文
android·数据库·mysql
小小小点20 小时前
Android四大常用布局详解与实战
android
MinQ21 小时前
binder和socket区别及原理
android