高通Q+A平台 android gcore解析环境搭建

QNX+LA平台在运行过程中可以在android发生crash的时候生成core文件,本文将会介绍如何搭建环境解析gcore文件.

获取gcore文件

在异常情况下或者LA侧手动触发kernel panic的方式获得gcore文件,这个文件通常位于qnx的/var/qnxlogs目录下,完整的文件大小为1.5GB左右(依据你实际分配给LA的内存大小决定)。名字一般为:la_guestdump.gcore.gz

获取qvm_dump_parser工具

这个工具位于qnx源码目录apps/qnx_ap/tools/debug/analyzer_tools/ramdump_parser/qvm_dump_parser/host/linux/x86_64

使用qvm_dump_parser解析gcore文件

指令使用方式:

ubuntu:~/workspace/ramdump$ ./qvm_dump_parser -p la_guestdump.gcore.gz -o output/
Attempting to decompress the gcore zip file.
Attempting to generate the OCIMEM and RESET_INFO binary files.
Attempting to generate the DDR binary files. Takes 2-3 mintues. Please wait!!
Created DDR file 'DDR_0.BIN'
Created DDR file 'DDR_1.BIN'
Created DDR file 'DDR_2.BIN'
Created DDR file 'DDR_3.BIN'
Created DDR file 'DDR_4.BIN'
qvm_dump_parser took about 68.27865 seconds

准备ramdump解析脚本

这些文件通常位于android的源码目录下:


PC:~/workspace/lagvm/LINUX/android/vendor/qcom/opensource/tools$ ls
dcc_parser  docs  ipc_logging  linux-ramdump-parser-v2  minidump

准备toolchain

可以通过Linaro Releases 下载 toolchain,请注意下载正确的对应版本:


root@ubuntu:~/ramdump/toolchain$ ls
gcc-linaro-4.9.4-2017.01-x86_64_aarch64-linux-gnu  gcc-linaro-4.9.4-2017.01-x86_64_aarch64-linux-gnu.tar.xz
root@ubuntu:~/ramdump/toolchain$

修改local_settings.py

参考下面的样例修改

root@ubuntu:~/ramdump$ ls linux-ramdump-parser-v2/local_settings.py
linux-ramdump-parser-v2/local_settings.py
root@ubuntu:~/ramdump$ cat linux-ramdump-parser-v2/local_settings.py
import parser_util,os,sys
gdb_path = "~/ramdump/toolchain/gcc-linaro-4.9.4-2017.01-x86_64_aarch64-linux-gnu/bin/aarch64-linux-gnu-gdb"
nm_path = "~/ramdump/toolchain/gcc-linaro-4.9.4-2017.01-x86_64_aarch64-linux-gnu/bin/aarch64-linux-gnu-nm"
objdump_path = "~/ramdump/toolchain/gcc-linaro-4.9.4-2017.01-x86_64_aarch64-linux-gnu/bin/aarch64-linux-gnu-objdump"
 
gdb64_path = "~/ramdump/toolchain/gcc-linaro-4.9.4-2017.01-x86_64_aarch64-linux-gnu/bin/aarch64-linux-gnu-gdb"
nm64_path = "~/ramdump/toolchain/gcc-linaro-4.9.4-2017.01-x86_64_aarch64-linux-gnu/bin/aarch64-linux-gnu-nm"
objdump64_path = "~/ramdump/toolchain/gcc-linaro-4.9.4-2017.01-x86_64_aarch64-linux-gnu/bin/aarch64-linux-gnu-objdump"

 解析gcore文件生成输出结果

使用指令:

python2.7 linux-ramdump-parser-v2/ramparse.py --vmlinux output/vmlinux --auto-dump output/ --force-hardware msmnile -x --dmesg --ipc-skip --dump-ftrace -o parser_output/


root@ubuntu:~/ramdump$ python2.7 linux-ramdump-parser-v2/ramparse.py --vmlinux output/vmlinux --auto-dump output/ --force-hardware msmnile -x --dmesg --ipc-skip --dump-ftrace -o parser_output/
 
    [1/46] --sched-info ... 0.325290s
    [2/46] --cbmem ... 0.074428s
    [3/46] --clock-dump ... 0.796523s
    [4/46] --cpr3-info ... NOTE: 'kryo_regulator_list' list not found to extract kryo_addr information
0.070664s
    [5/46] --cpr-info ... 0.040970s
    [6/46] --cpu-state ... 0.061613s
    [7/46] --ddr-compare ... 2.797104s
    [8/46] --check-for-watchdog ... 0.027185s
    [9/46] --watchdog ... FAILED! 3.434677s
    [10/46] --parse-debug-image ... 15.624387s
    [11/46] --dmesg ... 0.478022s
    [12/46] --print-filetracking ... 538.393242s
    [13/46] --dump-ftrace ... 0.000149s
    [14/46] --print-iommu-pg-tables ... FAILED! 1.074231s
    [15/46] --print-ipc-logging ... Skipping IPC log extraction. 0.000034s
    [16/46] --print-irqs ... 1.258463s
    [17/46] --print-kconfig ... 0.008418s
    [18/46] --l1-compare ... 0.000442s
    [19/46] --lockdep-heldlocks ... 0.000082s
    [20/46] --logcat ... 10.388355s
    [21/46] --lpm ... 0.231866s
    [22/46] --print-mdpinfo ... 0.085260s
    [23/46] --print-memstat ... FAILED! 0.389625s
    [24/46] --print-memory-info ... 0.805391s
    [25/46] --mmcdoctor ... FAILED! 0.000432s
    [26/46] --dump-page-tables ... 0.000225s
    [27/46] --print-pagealloccorruption ... 0.000069s
    [28/46] --print-pagetracking ... 0.096157s
    [29/46] --print-pagetypeinfo ... 0.904282s
    [30/46] --pstore ... FAILED! 0.274362s
    [31/46] --print-reserved-mem ... 0.104845s
    [32/46] --print-cma-areas ... FAILED! 4.287186s
    [33/46] --print-softirq-stat ... 0.112831s
    [34/46] --print-qsee-log ... 0.072410s
    [35/46] --check-rodata ... FAILED! 0.816940s
    [36/46] --print-rtb ... 0.049366s
    [37/46] --print-runqueues ... 2.128628s
    [38/46] --spm ... 0.000399s
    [39/46] --print-tasks ... 4.178147s
    [40/46] --print-tasks-timestamps ... 0.687941s
    [41/46] --check-for-panic ... 0.044627s
    [42/46] --thermal-info ... 0.481725s
    [43/46] --timer-list ... 1.177844s
    [44/46] --print-vmalloc ... 3.291382s
    [45/46] --print-vmstats ... 1.485176s
    [46/46] --print-workqueues ... 0.982326s

解析得到的内容:

root@ubuntu:~/ramdump/parser_output$ ls
ClockDumps.txt                              cprinfo.txt          l1_cache.txt   mem_stat.txt      spm.txt                 tasks_sched_stats1.txt  tasks_sched_stats6.txt  tmc-etf-swao.bin
cma_report_dma_contiguous_default_area.txt  DDRCacheCompare.txt  launch_t32.sh  page_tables.txt   t32_config.t32          tasks_sched_stats2.txt  tasks.txt               tmc-etr.bin
cma_report_simple.txt                       dmesg_TZ.txt         logcat.bin     qsee_log.txt      t32_startup_script.cmm  tasks_sched_stats3.txt  thermal_info.txt        vmalloc.txt
console_logs.txt                            file_tracking.txt    lpm.txt        reserved_mem.txt  tasks_highlight.txt     tasks_sched_stats4.txt  timerlist.txt
cpr3_info.txt                               kconfig.txt          memory.txt     roareadiff.txt    tasks_sched_stats0.txt  tasks_sched_stats5.txt  tmc-etf.bin

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值