Android系统的问题分析笔记 - Android上的调试方式 debuggerd

debuggerd 是 Android 系统中的一个重要调试工具,主要用于生成进程崩溃时的核心转储(core dump)和调试信息(如堆栈跟踪)。以下是关于 debuggerd 的详细说明:

1. 基本功能

  • 崩溃分析 :当 Native 进程(C/C++ 代码)崩溃时,debuggerd 会捕获信号(如 SIGSEGVSIGABRT),生成 tombstone 文件(墓碑文件),记录崩溃时的堆栈、寄存器、内存映射等信息。
  • 主动调试:支持主动附加到运行中的进程,生成堆栈跟踪(无需崩溃)。

2. 主要命令

(1) 被动触发(自动)

当进程崩溃时,系统会自动调用 debuggerd 生成 tombstone 文件,保存在 /data/tombstones/ 目录下(文件名如 tombstone_00)。

(2) 主动调试

  • 获取进程堆栈

    附加到正在运行的进程并打印堆栈:

    bash 复制代码
    debuggerd -b <pid>
    • -b:输出简要堆栈(否则生成完整 tombstone 文件)。
  • 生成完整 tombstone 文件

    bash 复制代码
    debuggerd <pid>

    输出文件默认在 /data/tombstones/

(3) 高级选项

  • 回溯特定线程

    bash 复制代码
    debuggerd -t <tid>
    • -t:指定线程 ID(而非进程 ID)。
  • 调用 gdbserver 附加调试

    bash 复制代码
    debuggerd --wrapper gdbserver :5039 --attach <pid>

    用于远程 GDB 调试。

3. 关键文件路径

  • Tombstone 文件
    /data/tombstones/tombstone_XX(需 root 权限访问)。
  • Logcat 输出
    崩溃日志也会出现在 logcat 中,搜索关键字 DEBUG 或进程名。

4. 权限要求

  • 查看其他进程的堆栈需要 root 权限ptrace 能力。
  • 普通应用只能调试自身进程。

5. 使用示例

(1) 捕获崩溃

  1. 触发一个 Native 崩溃(如空指针访问)。
  2. 通过 logcat 或检查 /data/tombstones/ 查看崩溃详情。

(2) 主动获取堆栈

bash 复制代码
adb shell
su
debuggerd -b <pid>  # 替换为实际进程 ID

6. 分析 tombstone 文件

tombstone 文件包含以下关键信息:

  • 信号 (如 SIGSEGV)。
  • 堆栈跟踪(包括库和函数名)。
  • 寄存器状态(PC、SP 等)。
  • 内存映射/proc/<pid>/maps)。

使用 ndk-stack 工具(NDK 提供)可以符号化堆栈:

bash 复制代码
ndk-stack -sym <so文件路径> -dump tombstone_00

7. 注意事项

  • Android 版本差异
    • Android 8.0+ 使用 crash_dump 替代传统 debuggerd,但命令兼容。
  • 性能影响
    频繁附加调试可能导致进程短暂挂起。
  • 安全限制
    非 root 设备可能无法调试系统进程。

8. 相关工具

  • ndk-stack:符号化 tombstone 文件。
  • addr2line(NDK 工具链):解析具体代码行。
  • GDB/LLDB :配合 gdbserver 进行动态调试。

如果需要进一步分析崩溃,建议结合源码和编译生成的符号文件(.so 或带调试信息的二进制)。

相关推荐
安东尼肉店7 分钟前
Android compose屏幕适配终极解决方案
android
2501_9160074722 分钟前
HTTPS 抓包乱码怎么办?原因剖析、排查步骤与实战工具对策(HTTPS 抓包乱码、gzipbrotli、TLS 解密、iOS 抓包)
android·ios·小程序·https·uni-app·iphone·webview
feiyangqingyun1 小时前
基于Qt和FFmpeg的安卓监控模拟器/手机摄像头模拟成onvif和28181设备
android·qt·ffmpeg
用户2018792831676 小时前
ANR之RenderThread不可中断睡眠state=D
android
煤球王子6 小时前
简单学:Android14中的Bluetooth—PBAP下载
android
小趴菜82276 小时前
安卓接入Max广告源
android
齊家治國平天下6 小时前
Android 14 系统 ANR (Application Not Responding) 深度分析与解决指南
android·anr
ZHANG13HAO6 小时前
Android 13.0 Framework 实现应用通知使用权默认开启的技术指南
android
【ql君】qlexcel6 小时前
Android 安卓RIL介绍
android·安卓·ril
写点啥呢6 小时前
android12解决非CarProperty接口深色模式设置后开机无法保持
android·车机·aosp·深色模式·座舱