在开发调试过程中,经常会遇到手机/设备crash或者dump了,memory dump是分析系统crash/dump的重要办法

在qualcomm的流程中,设备如果发生dump,会将dump的log缓存到某一个区域,用户可以利用个别工具将log取出来分析,以下就是基本qcom的基础上介绍几种获取dump log的方法:

1.T32方法

trace32 onlie软件,链接到主板/设备上,然后利用JTAG方法能获取到log,T32的方法适用于qcom和MTK各种平台,具体方法可以google T32查询,这里不重点不在T32的方法

2.利用QPST获取

手机在dump后,会进入一个特殊的端口模式(diag.9006 Port),手机此时并不是处于关机/待机状态,这时候打开QPST Configuration,手机会自动抓取dump log并导出。同时,可以在phone状态栏发现,手机处于sahara memory dump的状态下。如下:

然后对应的文件夹会存放到指定的QPST目录下,默认目录在:

C:\Program Files\Qualcomm\QPST\....

在QPST中有设置输出路径的地方,DUMP LOG. 存储路径为 :

点击 Help 菜单 第二项 Open Log File Directory ,在弹出的窗口中打开Sahara 文件夹中 ,其中Port_COMX文件夹内存放的就是DUMP LOG, 注意此处 Port_COM号跟之前在QPST Configuration软件中显示COM 号要一致。以确保是本次导出

注意的是

1.在链接QPST导出时,请关系其他占用端口的软件,例如QDST等等,否则可能会导致QPST无法连接串口

2.QPST软件最好在window下运行,在虚拟机的window中运行有时候也会发生未知的错误链接不到

××××××××

获取到dump的log后,此时的log是无法直接review的,还需要经过处理,拿到ramdump+vmulinux,放在同一个路径下

脚本请下载:linux-ramdump-parser-v2/ramparse.py

git clone git://codeaurora.org/quic/la/platform/vendor/qcom-opensource/tools

以上工具是需要区分32位和64位的,请注意环境

同时在android环境中找到ndk提供的交叉编译环境:arm-linux-androideabi-gdb和arm-linux-androideabi-nm(也可以在网上下载)

执行以下cmd:

python /data/doc/linux-ramdump-parser-v2/ramparse.py --force-hardware=8916 -v/data/Port_COM49/vmlinux -g /data/p445tf/prebuilts/gcc/linux-x86/arm/arm-linux-androideabi-4.8/bin/arm-linux-androideabi-gdb -n /data/p445tf/prebuilts/gcc/linux-x86/arm/arm-linux-androideabi-4.8/bin/arm-linux-androideabi-nm -a /data/Port_COM49 -o /data/dump8 –x

以上, 红色部分:ramparse.py脚本路径

 绿色部分:平台信息

浅紫色部分:vmlinux路径

深紫色部分:交叉编译环境路径,目前的路径就是gcc环境编译后存放在位置

 深黑色部分:dump文件名

以上是为了举例解释脚本用法,最好是添加到~/brasch中,方便快捷

其中-v指定dump文件对应的带调试信息的内核vmlinux文件
       -g指定对应的gdb工具文件
       -o指定解析文件的输出目录
       -x表示所有的debug信息均输出

命令执行后会出现如下解析info

!!! 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 ...
    ...

等待大约8分钟后,会提示解析完成,然后可以打开分析,dump log全部解析完成

3.利用高通QCAP网站解析

首先,你得有高通账号!你得有高通账号!你得有高通账号!(同时qcom那边有贵司项目信息入库)重要的事情说三遍

QCAP网站:

https://cap.qti.qualcomm.com/default.aspx

进入后是如下界面,界面中保存着你所有解析过的dump文件的记录,甚至可以下载xml下来给高通帮忙分析

那么要使用这个网页工具,点击new start analysas,会进入下面的页面:

按照图上的信息填完,carsh log就是dump log的路径

而build location这选择contents.xml路径,该文件存放在nonhlos/或者amss/下,用于区分modem侧各个分区的信息,会依照此文件分别解析对应log

解析完成后会显示如下界面:

首页会有网页自动帮忙分析的root case,当然解决问题的办法还需要深入的去查看其中的详细log(左侧可以分别查看tz,modem,ap侧等各类log和存储堆栈信息)

奇怪的是,个别log本地解析会有异常,没有log吐出,如果有case在qcom帮忙分析的话,qcom会重新要一份这样的vmlinux,dump file等拿去自己解析(据说他们解析出来文件是完整的)

解析dump的几种方式相关推荐

  1. java解析xml的几种方式

    java解析xml的几种方式 博客分类: java基础备忘-好记性不然烂笔头 XMLJava应用服务器数据结构编程  第一种:DOM. DOM的全称是Document Object Model,也即文 ...

  2. Java解析Xml的三种方式总结

    转自:http://blog.csdn.net/zjf280441589/article/details/50613881 XML解析技术有两种 DOM SAX DOM方式  根据XML的层级结构在内 ...

  3. Xml解析常用的两种方式

    Xml解析常用的两种方式 Xml解析常用的两种方式dom. DOM4J 下面我们先看一下这两种方式的优缺点: 1.DOM解析的特点是将整个xml文档以树形结构放入到内存中,是官方推荐标准,优点是在内存 ...

  4. java映射文件是哪一种xml_java解析xml的几种方式哪种最好?

    满意答案 gjek59ug 2013.10.10 采纳率:52%    等级:12 已帮助:9223人 (1)DOM解析 DOM是html和xml的应用程序接口(API),以层次结构(类似于树型)来组 ...

  5. Python爬虫解析网页的4种方式 值得收藏

    用Python写爬虫工具在现在是一种司空见惯的事情,每个人都希望能够写一段程序去互联网上扒一点资料下来,用于数据分析或者干点别的事情. 我们知道,爬虫的原理无非是把目标网址的内容下载下来存储到内存中, ...

  6. java json 解析_Java解析JSON的四种方式

    一.什么是JSON JSON是一种轻量级的数据交换格式,采用完全独立于编程语言的文本格式来存储和表示数据.简洁和清晰的层次结构使得 JSON 成为理想的数据交换语言. 易于阅读和编写,同时也易于解析和 ...

  7. python网页结构分析图_Python爬虫解析网页的4种方式 值得收藏

    用Python写爬虫工具在现在是一种司空见惯的事情,每个人都希望能够写一段程序去互联网上扒一点资料下来,用于数据分析或者干点别的事情. 我们知道,爬虫的原理无非是把目标网址的内容下载下来存储到内存中, ...

  8. python网页结构分析_Python爬虫解析网页的4种方式 值得收藏

    用Python写爬虫工具在现在是一种司空见惯的事情,每个人都希望能够写一段程序去互联网上扒一点资料下来,用于数据分析或者干点别的事情. 我们知道,爬虫的原理无非是把目标网址的内容下载下来存储到内存中, ...

  9. 解析XML的几种方式的原理与特点:DOM、SAX、JDOM、DOM4J

    XML是一种通用的数据交换格式,它的平台无关性.语言无关性.系统无关性.给数据集成与交互带来了极大的方便.XML在不同的语言环境中解析方式都是一样的,只不过实现的语法不同而已. XML的解析方式分为四 ...

最新文章

  1. R语言merge函数全连接dataframe数据(Full (outer) join)、merge函数进行全连接必须将参数all设置为true(all=TRUE)、默认merge函数通过公共列名合并数
  2. Mybatis源码解读-设计模式总结
  3. Could not find a version that satisfies the requirement pyspider (from versions: ) No matching distr
  4. tensorflow与numpy的版本兼容性问题(亲测)
  5. 编程语言API性能大比拼
  6. 机器学习中的损失函数(交叉熵损失、Hinge loss)
  7. 在原生js中的,table表格,display:block之后,样式混乱
  8. eclipse优化记录
  9. 计算机专业读研好还是研究生好,计算机专业考研好呢还是直接工作好
  10. 深入理解网络通信与tcp/ip协议
  11. 2021年新版本下载钉钉群直播回放视频方法介绍
  12. Nginx反向代理解决跨域问题(个人学习总结)
  13. BMP390高精度压力传感器数据读取与处理(基于STM32)
  14. 2023.0125.1-edge浏览器与百分浏览器
  15. urlrewriter 用法
  16. 大数据实时传输组件Maxwellmaxwell中遇到的问题
  17. 机器学习实验 - 朴素贝叶斯分类器
  18. Spring In Action读书笔记
  19. C语言中常见字符串API详解
  20. 兄弟mfc9140cdn无法识别_兄弟Brother MFC-9140CDN打印机驱动下载

热门文章

  1. JSP-----------简易购物车代码
  2. Dr.com 新版 Ver 5.2.0 本地 密码 读取 查看 破解
  3. 在微服务架构中管理技术债务
  4. 利用C语言写一个U盘小偷程序
  5. 三种伺服电机控制方式总结
  6. iOS IM自研方案
  7. rtx3050和rtx3050ti区别 rtx3050和rtx3050ti显卡什么水平
  8. 在网页中实现图片的轮播
  9. 浏览器下载软件时,默认是用迅雷下载,如何取消?
  10. Intel Distiller工具包-量化实现2