[Debug]android_ramdump_tool_crash_introduce

本文介绍了使用Crash工具分析Android设备上Linux内核panic时的ramdump文件的方法。包括Crash工具的下载、编译及安装过程,以及具体的ramdump分析步骤。还列举了一些常用的调试命令。

Android查看linux kernel panic issue时,我们需要分析ramdump。

目前我常用的有两种方法来解析ramdump,

-Crash utility

-T32 simulator


我这里介绍crash工具。


Crash utility tool website:

http://people.redhat.com/anderson/

1.Download“crash-7.0.2.tar.gz”

    http://people.redhat.com/anderson/crash-7.0.2.tar.gz

2. To build from the compressed tar image, simply uncompress/extract the sourcefiles,cd into the resultant source directory, and enter make.


3. The command as below:

3.1 >tar xvzmf crash-7.0.2.tar.gz

3.2 >cd ./crash-7.0.2

3.3 >make

       ARM: make target=ARM

3.4 >sudo make install

3.5 >crash –version  //check crash version


4. Analysis Ramdump step.

1) Get System.map

    

2)to get vmcore file(ELF format)

    CMD:  cat  header.bin   ./DDRCS0.BIN >vmcore_test

   Note: here needs header.bin

3)start crash

    CMD: ./crash System.map vmlinux vmcore_test



5. Useful debug command:

set,显示当前发生重大故障时运行进程的上下文。

sf,set scroll off的别名

bt,backtrace

ps,进程,可以查ps | grep ">"

log,显示log

dis ,反汇编

dmesg,同 log

还有很多,如rd,p,mod,sym.....需要自己去摸索。



`subsystem_ramdump` 是 Android 系统中与 **崩溃调试和内存转储** 相关的一个术语,通常出现在 **高通(Qualcomm)平台设备** 上,特别是在系统发生严重崩溃(如 Modem、GPU、WLAN 等子系统崩溃)时。 --- ### 📌 什么是 `subsystem_ramdump`? #### 🔍 定义 - `subsystem_ramdump` 是一种 **子系统内存转储机制**。 - 当某个硬件子系统(如 Modem、GPU、Camera、WLAN 等)发生崩溃时,系统会尝试将该子系统的内存内容(RAM)保存到主存中,以便后续分析。 - 这些内存转储文件通常保存在 `/data/dontpanic/` 或 `/data/vendor/dump/` 目录下。 --- ### 🧠 作用与背景 - **子系统崩溃**(如 Modem 崩溃)不会直接导致 Android 系统重启,但会影响设备功能(如无法打电话、无法连接 WiFi)。 - 为了调试这些子系统的崩溃,厂商(尤其是高通)实现了 `ramdump` 功能。 - `subsystem_ramdump` 机制会: 1. 捕获子系统崩溃事件。 2. 将崩溃时的子系统内存内容转储到 RAM 中。 3. 由 `minidump` 或 `ramdump` 工具保存为文件,供后续分析。 --- ### 📁 相关路径和文件 | 路径 | 说明 | |------|------| | `/data/dontpanic/` | 通常存放系统崩溃时生成的 `ramdump` 文件 | | `/data/vendor/dump/` | 部分设备用于存放子系统崩溃日志 | | `/sys/module/subsystem_restart/parameters/ramdump_on_panic` | 控制是否在崩溃时启用 ramdump | | `ramdump_<subsys_name>.elf` | 转储的子系统内存文件,可使用 QTI 工具分析 | --- ### 🔧 如何触发 `subsystem_ramdump`? 1. **子系统崩溃**(如 Modem、GPU、WLAN 等) 2. **Watchdog 超时** 3. **手动触发调试命令**(如通过 ADB) --- ### 🛠️ 如何分析 `subsystem_ramdump` 文件? - **需要厂商工具**:如 Qualcomm 的 **QTI Hexagon SDK**、**QDSS**、**QCAT** 等。 - **流程**: 1. 提取 `/data/dontpanic/` 中的 `ramdump` 文件。 2. 使用 QTI 工具加载符号表(ELF 文件)。 3. 分析调用栈、寄存器状态、内存地址等。 --- ### 📝 示例日志(logcat) ``` <3>[system:debuggerd] subsystem_ramdump: Subsystem modem crash detected <3>[system:debuggerd] subsystem_ramdump: Starting ramdump for modem <3>[system:debuggerd] subsystem_ramdump: Ramdump saved to /data/dontpanic/ramdump_modem.elf ``` --- ### ✅ 最佳实践建议 - 在设备上启用 `ramdump_on_panic=1` 可确保崩溃时自动保存子系统内存。 - 若你是设备厂商或调试人员,应熟悉 QTI 的调试工具链。 - `subsystem_ramdump` 对于定位 Modem、GPU、WLAN 等硬件子系统问题非常关键。 ---
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值