- 文档主要介绍如何利用ramdump-parser工具解析AP侧linux dump。
- ramdump-parser介绍
2.1 ramdump-parser组成:
ramdump-parser主要分为两部分功能,一部分是一套python解析脚本,如图2.1,另一部分是交叉编译工具,如图2.2。
图2.1
图2.2
2.2 ramdump-parser使用和分析
准备工作:
1)当系统挂掉后,需要使用高通qpst工具抓取ramdump。(qpst会将dump保存到相应路径并命名为类似Port_COM*的文件夹);
2)获取相应软件版本编译生成的vmlinux文件;
3)ramdump-parser工具路径。
命令解析方法过程如下:
suwei@ubuntu:~/ramdump/Port_COM24$ ls
CODERAM.BIN DDRCS0.BIN dump_info.txt load.cmm OCIMEM.BIN out_bak RST_STAT.BIN
DATARAM.BIN debug_vmlinux ipc_logging MSGRAM.BIN out PMIC_PON.BIN SN_C18C5F70
解析过程:
suwei@ubuntu:~/ramdump/Port_COM24$ ../ramdump-parser.sh
[1/32] --clock-dump ... 1.758616s
[2/32] --cpr3-info ... NOTE: 'kryo_regulator_list' list not found to extract kryo_addr information
0.068746s
[3/32] --cpr-info ... 2.529021s
[4/32] --cpu-state ... 0.035363s
[5/32] --ddr-compare ... 5.196215s
[6/32] --check-for-watchdog ... 0.037000s
[7/32] --parse-debug-image ... 27.564818s
[8/32] --dmesg ... 0.831937s
[9/32] --print-iommu-pg-tables ... 0.160261s
[10/32] --print-ipc-logging ... FAILED! 39.974577s
[11/32] --print-irqs ... 1.557243s
[12/32] --print-kconfig ... 0.348651s
[13/32] --lpm ... FAILED! 0.665646s
[14/32] --print-mdpinfo ... 0.037154s
[15/32] --print-memstat ... 0.896034s
[16/32] --print-memory-info ... 0.956112s
[17/32] --dump-page-tables ... 0.000161s
[18/32] --print-pagealloccorruption ... 0.000966s
[19/32] --print-pagetracking ... 0.000898s
[20/32] --print-pagetypeinfo ... 1.112308s
[21/32] --check-rodata ... 2.731867s
[22/32] --print-rtb ... 0.156771s
[23/32] --print-runqueues ... 2.499831s
[24/32] --spm ... 0.417232s
[25/32] --print-tasks ... 0.938417s [16/32] --print-memory-info ... 0.956112s
[17/32] --dump-page-tables ... 0.000161s
[18/32] --print-pagealloccorruption ... 0.000966s
[19/32] --print-pagetracking ... 0.000898s
[20/32] --print-pagetypeinfo ... 1.112308s
[21/32] --check-rodata ... 2.731867s
[22/32] --print-rtb ... 0.156771s
[23/32] --print-runqueues ... 2.499831s
[24/32] --spm ... 0.417232s
[25/32] --print-tasks ... 0.938417s
[26/32] --print-tasks-timestamps ... FAILED! 0.209937s
[27/32] --check-for-panic ... 0.023197s
[28/32] --thermal-info ... 0.595741s
[29/32] --timer-list ... 1.671173s
[30/32] --print-vmalloc ... 0.577060s
[31/32] --print-vmstats ... 1.625739s
[32/32] --print-workqueues ... 0.814753s
解析完成后结果如下图2.3所示:
图2.3
以mdm9607平台为例,打开解析完成后目录下的out/dmesg_TZ.txt文件(如图2.4),可以看到死机的调用堆栈,同时从图2.3来看,可以获取当前的进程task,寄存器,内核配置,dmesg,内存使用情况,timer,clock等系统信息。
图2.4
(注:对于一些其他平台如高通的SA515M或者手机MSM系列,如遇到解析有问题,有时需要借助—force-hardware加一些平台参数,参数配置类似boards.py中描述来进行解析)
附:
ramdump-parser.sh内容见另外一个链接。