高通平台 ramdump-parser 简介
ramdump 是什么?简单来说就是把系统memory中的某一个时间点的的数据信息通过一定手段取出来保存起来的内存崩溃文件,属于ELF文件格式。
当系统发生致命错误无法恢复的时候,主动触发抓取ramdump把异常现场保留下来供离线分析定位问题是一种非常重要的高级调试手段。
高通的ramdump触发后可以连USB通过PC工具拉出来,都是一堆binary文件,需要使用特定的脚本工具进一步解析后才可以使用工具调试,如下简单描述如何使用脚本工具解析出 ramdump:
1、将下面的脚本内容保存到: ~/work/script/ramdump-parser.sh,
修改~/.bashrc,并添加到环境变量:export PATH=~/work/script/:$PATH
# ramdump-parser.sh#! /bin/bashecho ""echo "Start ramdump parser.."local_path=$PWDramdump=$local_path/vmlinux=$local_path/vmlinuxout=$local_path/outgdb=~/tools/gnu-tools/aarch64-linux-android-4.9/bin/aarch64-linux-android-gdbnm=~/tools/gnu-tools/aarch64-linux-android-4.9/bin/aarch64-linux-android-nmobjdump=~/tools/gnu-tools/aarch64-linux-android-4.9/bin/aarch64-linux-android-objdump# git clone git://codeaurora.org/quic/la/platform/vendor/qcom-opensource/toolsramparse_dir=~/tools/ramdump/tools/linux-ramdump-parser-v2########################################################################################echo "cd $ramparse_dir"cd $ramparse_direcho ""echo -e "python ramparse.py -v $vmlinux -g $gdb -n $nm -j $objdump -a $ramdump -o $out -x"echo ""# python 2.7.5python ramparse.py -v $vmlinux -g $gdb -n $nm -j $objdump -a $ramdump -o $out -xcd $local_pathecho "out: $out"echo ""exit 0
2、从下面的地址取下高通解析工具:
android@ubuntu:~/tools/ramdump$ git clone git://codeaurora.org/quic/la/platform/vendor/qcom-opensource/tools
正克隆到 'tools'...
remote: Counting objects: 4698, done.
remote: Compressing objects: 100% (47/47), done.
remote: Total 4698 (delta 25), reused 0 (delta 0)
接收对象中: 100% (4698/4698), 753.66 KiB | 116.00 KiB/s, done.
处理 delta 中: 100% (3452/3452), done.
检查连接... 完成。
3、将gdb,nm,objdump和ramdump解析工具放到下面路径中,需要区分32/64位.
gdb=~/tools/gnu-tools/aarch64-linux-android-4.9/bin/aarch64-linux-android-gdb
nm=~/tools/gnu-tools/aarch64-linux-android-4.9/bin/aarch64-linux-android-nm
objdump=~/tools/gnu-tools/aarch64-linux-android-4.9/bin/aarch64-linux-android-objdump
ramparse_dir=~/tools/ramdump/tools/linux-ramdump-parser-v2
这里的aarch64-linux-android-gdb,在android源码中已经不再提供了,这儿提供一个下载的链接:download
4、拿到ramdump+vmulinux,放到任意同一个目录中:
android@ubuntu:~/tmp/Port_COM6$ find ./ -iname "*"
./
./PMIC_RTC.BIN
./RST_STAT.BIN
./load.cmm
./DATARAM.BIN
./DDR_DATA.BIN
./PMIC_PON.BIN
./DDRCS0.BIN
./OCIMEM.BIN
./vmlinux
./CODERAM.BIN
./DDRCS1.BIN
./dump_info.txt
./MSGRAM.BIN
5、确认dump文件和vmlinux的版本一致性:
strings vmlinux |grep "Linux version"Linux version 3.18.31 (android@ubuntu) (gcc version 4.9 20150123 (prerelease) (GCC) ) #1 SMP PREEMPT Wed Aug 9 23:23:27 CST 2017$ strings DDRCS0.BIN |grep "Linux version"Linux version 3.18.31 (android@ubuntu) (gcc version 4.9 20150123 (prerelease) (GCC) ) #1 SMP PREEMPT Wed Aug 9 23:23:27 CST 2017
如果确认版本是一致的可以进行下一步解析
6、执行解析(需要python2.7.5):
android@ubuntu:~/tmp/Port_COM6$ ramdump-parser.sh Start ramdump parser..cd /home/android/tools/ramdump/tools/linux-ramdump-parser-v2python ramparse.py -v /home/android/tmp/Port_COM6/vmlinux -g /home/android/tools/gnu-tools/aarch64-linux-android-4.9/bin/aarch64-linux-android-gdb -n /home/android/tools/gnu-tools/aarch64-linux-android-4.9/bin/aarch64-linux-android-nm -j /home/android/tools/gnu-tools/aarch64-linux-android-4.9/bin/aarch64-linux-android-objdump -a /home/android/tmp/Port_COM6/ -o /home/android/tmp/Port_COM6/out -x!!! Out directory does not exist. Creating...[1/32] --clock-dump ... 0.873911s[2/32] --cpr3-info ... 0.135361s[3/32] --cpr-info ... 1.103903s[4/32] --cpu-state ... 0.098867s[5/32] --ddr-compare ... 3.923111s[6/32] --check-for-watchdog ... 0.011697s[7/32] --parse-debug-image ......
等待约5-10分钟后解析完成,结果输出在 ${当前目录}/out中.
ls out/
arm_iommu_domain_00.txt dcc_regs.txt msm_iommu_domain_14.txt msm_rtb4.txt t32_startup_script.cmm
arm_iommu_domain_01.txt DDRCacheCompare.txt msm_iommu_domain_15.txt msm_rtb5.txt tasks_sched_stats0.txt
arm_iommu_domain_02.txt dmesg_TZ.txt msm_iommu_domain_16.txt msm_rtb6.txt tasks_sched_stats1.txt
arm_iommu_domain_03.txt kconfig.txt msm_iommu_domain_17.txt msm_rtb7.txt tasks_sched_stats2.txt
arm_iommu_domain_04.txt launch_t32.sh msm_iommu_domain_18.txt page_corruption_summary.txt tasks_sched_stats3.txt
arm_iommu_domain_05.txt lpm.txt msm_iommu_domain_19.txt page_frequency.txt tasks_sched_stats4.txt
arm_iommu_domain_06.txt memory.txt msm_iommu_domain_20.txt page_ranges.txt tasks_sched_stats5.txt
arm_iommu_domain_07.txt mem_stat.txt msm_iommu_domain_21.txt page_tables.txt tasks_sched_stats6.txt
arm_iommu_domain_08.txt MSM_DUMP_DATA_L1_DATA_CACHE_0x0 msm_iommu_domain_22.txt page_tracking.txt tasks_sched_stats7.txt
ClockDumps.txt MSM_DUMP_DATA_L1_DATA_CACHE_0x1 msm_iommu_domain_23.txt regs_panic.cmm tasks.txt
core0_regs.cmm MSM_DUMP_DATA_L1_DATA_CACHE_0x2 msm_iommu_domain_24.txt roareadiff.txt thermal_info.txt
core1_regs.cmm MSM_DUMP_DATA_L1_DATA_CACHE_0x3 msm_iommu_domain_25.txt secure_world_core0_regs.cmm timerlist.txt
core2_regs.cmm MSM_DUMP_DATA_L1_DATA_CACHE_0x4 msm_iommu_domain_26.txt secure_world_core1_regs.cmm tmc-etf.bin
core3_regs.cmm MSM_DUMP_DATA_L1_DATA_CACHE_0x6 msm_iommu_domain_27.txt secure_world_core2_regs.cmm tmc_etf.txt
core4_regs.cmm msm_iommu_domain_09.txt msm_iommu_domain_28.txt secure_world_core3_regs.cmm tmc-etr.bin
core6_regs.cmm msm_iommu_domain_10.txt msm_rtb0.txt secure_world_core4_regs.cmm tmc_etr.txt
cpr3_info.txt msm_iommu_domain_11.txt msm_rtb1.txt secure_world_core6_regs.cmm vmalloc.txt
cprinfo.txt msm_iommu_domain_12.txt msm_rtb2.txt spm.txt
dbgui.txt msm_iommu_domain_13.txt msm_rtb3.txt t32_config.t32
高通平台 ramdump-parser 简介相关推荐
- 高通平台Camera 框架简介
接触高通平台camera不长时间,了解的不够深入,下面个人所了解内容的是基于高通平台的camera,有的地方能描述不一定会很清楚,以后会慢慢补充! 一 框架介绍 Package -> Framw ...
- 高通Camera数字成像系统简介
转载: https://deepinout.com/qcom-camx-chi/qcom-camx-system-intro.html 整理:小驰笔记 相机的硬件层,作为整个框架的最底层,通过硬件模块 ...
- 高通平台 lcd driver 调试小结
一.概述 1.1 简介 本文档主要包括LCD模块的驱动流程分析.Framebuffer相关知识.Gralloc等相关内容,以及LCD调试的一些经验和相关bug的分析和讲解. 1.2 开发环境 And ...
- 高通平台android开发总结
http://www.cnblogs.com/yuzaipiaofei/archive/2012/07/24/4124179.html 1.高通平台android开发总结 1.1 搭建高通平台环境开发 ...
- 高通平台android 环境配置编译及开发经验总结
完全转自:http://blog.csdn.net/dongwuming/article/details/12784535 1.高通平台android开发总结 1.1 搭建高通平台环境开发环境 在高通 ...
- 高通平台android开发总结 .
http://blog.csdn.net/mirkerson/article/details/7691029 http://blog.csdn.net/mirkerson/article/detail ...
- 高通平台android 环境配置编译及开发经验总结【转】
1.高通平台android开发总结 1.1 搭建高通平台环境开发环境 在高通开发板上烧录文件系统 建立高通平台开发环境 高通平台,android和 modem 编译流程分析 高通平台 7620 启动流 ...
- 高通平台(Qualcomm) Android 10 /11/12 user版本默认打开adb 调试小结
1.流程 USB插入接收广播授权->建立adb连接服务->执行adb 命令 2.adb相关属性 ro.secure = 0 开启root权限 ro.adb.secure = 1 1开启ad ...
- 高通平台 input类 sensor驱动分析 : 光感/距感 stk3x1x driver分析
stk3x1x driver分析 1:注册驱动 定义 i2c_driver static struct i2c_driver stk_ps_driver = {.driver = {.name = D ...
- android 高通平台有前途吗,华为鸿蒙计划要适配高通平台了,可以告别安卓搭载鸿蒙OS了?...
鸿蒙走出这一步是可以想象到的,看来华为打造这个系统希望的结果是万物皆可盘呀,所以一开始就提出了开源,也就意味着这次是高通,下次就可以是联发科,甚至更多的手机品牌也完全就可以搭载!早期我们一直在说国产手 ...
最新文章
- 《OpenCV3编程入门》学习笔记2 启程前的认知准备
- 疯狂上涨的 Python,开发者应从 2.x 还是 3.x 着手?
- Elide 4.3.1 发布,雅虎开源的应用数据 API 搭建平台
- 详解log4j2(上) - 从基础到实战
- kuberbetes的架构与kubernetets集群搭建
- linux系统服务详解 用于Linux系统服务优化
- vnpy策略回测如何设置滑点手续费和size
- artemis服务_artemis小结
- CSS-文本垂直居中
- Spark系列(三)SparkContext分析
- linux npm 使用介绍
- 数电educoder的verilog参考答案
- 关于Hanlp的源码
- (copy即运行)嗖嗖移动大厅详讲!!!一看便知
- COSCon'22 第七届中国开源年会火热报名中,喜迎新一波赞助伙伴
- win10系统改win7设置bios方法图文教程
- macOS软件历史版本下载
- Excel if及ifs函数用法
- WinCC智能报表(代替热风炉岗位工手抄日志)
- SLAM在机器人中的应用尽如此之广
热门文章
- 重定向和请求转发详解
- 索尼相机手机控制对焦,摄影新手必看—关于索尼微单的15条技巧分享
- 威纶通触摸屏与仪表通讯_威纶通触摸屏与英威腾变频器通信详细说明
- zktime 协议_zktime5.0考勤管理系统使用说明书(1.2版).pdf
- Web安全测试之跨站请求伪造(CSRF)
- 上下文无关文法(CFG)
- Verilog基础知识4(常用集成门电路的逻辑符号对照表)
- 计算机模拟求解流体力学方程,计算流体力学CFD及其应用
- 我是如何在开源系统中(Vue)中引入阿里巴巴Icon图标的?
- bim建模的过程的几个要点