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,objdumpramdump解析工具放到下面路径中,需要区分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 简介相关推荐

  1. 高通平台Camera 框架简介

    接触高通平台camera不长时间,了解的不够深入,下面个人所了解内容的是基于高通平台的camera,有的地方能描述不一定会很清楚,以后会慢慢补充! 一 框架介绍 Package -> Framw ...

  2. 高通Camera数字成像系统简介

    转载: https://deepinout.com/qcom-camx-chi/qcom-camx-system-intro.html 整理:小驰笔记 相机的硬件层,作为整个框架的最底层,通过硬件模块 ...

  3. 高通平台 lcd driver 调试小结

    一.概述 1.1 简介 本文档主要包括LCD模块的驱动流程分析.Framebuffer相关知识.Gralloc等相关内容,以及LCD调试的一些经验和相关bug的分析和讲解. 1.2  开发环境 And ...

  4. 高通平台android开发总结

    http://www.cnblogs.com/yuzaipiaofei/archive/2012/07/24/4124179.html 1.高通平台android开发总结 1.1 搭建高通平台环境开发 ...

  5. 高通平台android 环境配置编译及开发经验总结

    完全转自:http://blog.csdn.net/dongwuming/article/details/12784535 1.高通平台android开发总结 1.1 搭建高通平台环境开发环境 在高通 ...

  6. 高通平台android开发总结 .

    http://blog.csdn.net/mirkerson/article/details/7691029 http://blog.csdn.net/mirkerson/article/detail ...

  7. 高通平台android 环境配置编译及开发经验总结【转】

    1.高通平台android开发总结 1.1 搭建高通平台环境开发环境 在高通开发板上烧录文件系统 建立高通平台开发环境 高通平台,android和 modem 编译流程分析 高通平台 7620 启动流 ...

  8. 高通平台(Qualcomm) Android 10 /11/12 user版本默认打开adb 调试小结

    1.流程 USB插入接收广播授权->建立adb连接服务->执行adb 命令 2.adb相关属性 ro.secure = 0 开启root权限 ro.adb.secure = 1 1开启ad ...

  9. 高通平台 input类 sensor驱动分析 : 光感/距感 stk3x1x driver分析

    stk3x1x driver分析 1:注册驱动 定义 i2c_driver static struct i2c_driver stk_ps_driver = {.driver = {.name = D ...

  10. android 高通平台有前途吗,华为鸿蒙计划要适配高通平台了,可以告别安卓搭载鸿蒙OS了?...

    鸿蒙走出这一步是可以想象到的,看来华为打造这个系统希望的结果是万物皆可盘呀,所以一开始就提出了开源,也就意味着这次是高通,下次就可以是联发科,甚至更多的手机品牌也完全就可以搭载!早期我们一直在说国产手 ...

最新文章

  1. 《OpenCV3编程入门》学习笔记2 启程前的认知准备
  2. 疯狂上涨的 Python,开发者应从 2.x 还是 3.x 着手?
  3. Elide 4.3.1 发布,雅虎开源的应用数据 API 搭建平台
  4. 详解log4j2(上) - 从基础到实战
  5. kuberbetes的架构与kubernetets集群搭建
  6. linux系统服务详解 用于Linux系统服务优化
  7. vnpy策略回测如何设置滑点手续费和size
  8. artemis服务_artemis小结
  9. CSS-文本垂直居中
  10. Spark系列(三)SparkContext分析
  11. linux npm 使用介绍
  12. 数电educoder的verilog参考答案
  13. 关于Hanlp的源码
  14. (copy即运行)嗖嗖移动大厅详讲!!!一看便知
  15. COSCon'22 第七届中国开源年会火热报名中,喜迎新一波赞助伙伴
  16. win10系统改win7设置bios方法图文教程
  17. macOS软件历史版本下载
  18. Excel if及ifs函数用法
  19. WinCC智能报表(代替热风炉岗位工手抄日志)
  20. SLAM在机器人中的应用尽如此之广

热门文章

  1. 重定向和请求转发详解
  2. 索尼相机手机控制对焦,摄影新手必看—关于索尼微单的15条技巧分享
  3. 威纶通触摸屏与仪表通讯_威纶通触摸屏与英威腾变频器通信详细说明
  4. zktime 协议_zktime5.0考勤管理系统使用说明书(1.2版).pdf
  5. Web安全测试之跨站请求伪造(CSRF)
  6. 上下文无关文法(CFG)
  7. Verilog基础知识4(常用集成门电路的逻辑符号对照表)
  8. 计算机模拟求解流体力学方程,计算流体力学CFD及其应用
  9. 我是如何在开源系统中(Vue)中引入阿里巴巴Icon图标的?
  10. bim建模的过程的几个要点