首页 > 其他分享 >MTK-coredump 工具的使用

MTK-coredump 工具的使用

时间:2022-08-31 12:46:49浏览次数:97  
标签:文件 shell libc coredump MTK adb 工具 解析

传音AD9项目报告的内存泄漏问题,家里的内存测试方式比较难以复现,所以想和传音测试对齐,使用同种的测试方式来复现问题

-------------使用工具---------------

mtk coredump 功能、coredump文件解析工具 GAT(Official)_ALPS、coredump报告分析工具 SpOfflineDebugSuite(Official)_ALPS。工具都包括windows&linux版本

 

------------使用流程简介----------

1、开启mtk coredump、malloc debug

2、进行测试case的压测,可以进行大量的压测为基础,在即将运行结束的时候kill 掉 需要进行内存跟踪的线程

3、获取到产生的coredump文件,使用GAT工具进行解析

4、对解析生成的db文件夹进行 数据分析,产生对应的报告

 

-----------详细的的使用流程和设置命令---------

1、开启mtk coredump、malloc debug

打开 coredump:

手机平台对应的是mtk的版本,一般测试使用的手机都是root版本,O版本之后都是默认开启coredump功能的。

具体的查看方法: adb shell getprop | grep aeev.core

出现对应的属性值是 enable就是证明打开了coredump,如下所示

[persist.vendor.aeev.core.direct]: [enable]

[persist.vendor.aeev.core.dump]: [enable]

如果没有打开,使用下面命令打开即可

adb shell setprop persist.vendor.aeev.core.direct enable

adb shell setprop persist.vendor.aeev.core.dump enable

打开之后,需要设置mode的级别,不设置的话可能不出现coredump文件

adb shell setprop persist.vendor.mtk.aeev.mode 3

adb shell setprop persist.vendor.mtk.aee.mode 3

设置之后最好查看一下是否成功,保证最快抓到需要的的文件

 

设置malloc debug:

使用下面的命令可以暂时的监控对应的线程程序,重启之后就会失效,设置之后可以使用 adb shell getprop进行查看是否设置成功:

adb shell setprop libc.debug.malloc.options \”backtrace=8 guard=8 leak_track\”

adb shell setprop libc.debug.malloc.program native_exec

adb shell setprop libc.debug.malloc.program camerahalserver

其中program代表的是要监控的线程名称,native_exec就是我们的本地SDK测试的可执行文件,camerahalserver就是在线的SDK所在的进程名称,如果想监控app程序,直接设置对应app

进程名就可以了

第二种方式,就是单独建立一个prop文件来放置使用的属性值,这样重启还是生效的

adb shell "echo libc.debug.malloc.options = \"backtrace=8 guard=8 leak_track\" >> /data/local.prop"

adb shell "echo libc.debug.malloc.program = camerahalserver >> /data/local.prop"

adb shell "chmod 644 /data/local.prop"

adb reboot

 

2、环境准备好了,接下来就是傻瓜式的进行cases的测试,具体测试次数依据自己的实际情况进行判断。等到测试快要结束的时候,这个是相对与离线测试条件下,如果不及时的kill 进程,就不会产生

对应的coredump文件了。这个需要注意。对于在线来说,因为本身camerahalserver相机打开状态就一直在运行。所以在线的进程kill可以再测试结束一段时间之后,可以排除一些不必要的内存问题

具体的杀死进程命令,下面命令才能出现NE的错误,产生coredump文件,注意杀死对应的进程的ID

adb shell kill -11 $pid

 

3、获取对应的db文件,具体的目录是在 /data/aee_exp/ 或者是 /data/vendor/aee_exp 目录下面 ,甚至有的手机会在 /data/debuglogger/  目录下面,注意查看一下

具体的文件加是 下面这种格式的 db.00.NE  db.01.NE ,使用 adb pull 拉到本地就可以了

 

4、文件的解析,使用两个工具解析就可以了

4.1 使用GAT解析 db.00.NE.dbg ,生成 db.00.NE.dbg.DEC 解析文件夹目录

linux版本:

 ./gat-linux-x86_64-4/modules/spsst/tools/aee_db_extract 可执行文件后面直接加db文件即可。最新版本的aee_extract 直接将内部的coredump.dbg也解析出来了,所以直接使用aee_extract就OK了

 ./gat-linux-x86_64-4/modules/spsst/tools/aee_db_extract  path/db.00.NE.dbg

windows版本:

会有对应的exe文件,在dos命令窗口下面解析即可,可以参照上面目录找到对应的windows版本的执行文件

path/aee_db_extract.exe path/db.00.NE.dbg

 

5、使用SpOfflineDebugSuite 工具解析生成内存报告

SpOfflineDebugSuite 使用对应系统文件可以正常解析文件,需要在sysmbol中放入libc.so文件就可以解析出来对应的c_leak.txt文件,如果不放入c_leak.txt文件就不能生成具体的泄露信息。因为malloc debug这个堆信息

最底层是基于libc.so这个标准库函数的,所以需要有这个库来进行报告的栈信息解析,如果没有这个文件会报下面的问题:

sample: 这个依据版本实际使用的libc.so

加入libc.so就会正常:

正常回车之后的界面如下,使用对应命令生成对应文件就可以了:

其中 l 对应生成 c_leak.txt 文件,包含的是存在泄露的栈信息

dc 对应生成的是 c_heap.txt,包含的是c堆的内容

df 对应的生成的是 fd_dump.txt,包含的是句柄泄露的内容

其中c_leak.txt文件的具体内容格式如下:

 

 

具体使用是 linux ./OfflineSST64 /home/liulei/test/db.00.NE/db.00.NE.dbg.DEC 先解析生成sysmbol文件夹,然后放入libc.so文件,再次解析,按照提示进行对应文件的生成,其中 l <num> : l 100 就是把前一百的堆泄露过滤出来。dc 是显示c堆的内容

windows使用: 工具包使用setup.bat安装之后,右键上面解压出来的db.00.NE.dbg.DEC的文件夹就会出现 NE/NK -Analyze菜单功能,之后产生生成sysmbol文件夹,具体操作和上面一样,再次解析,按照命令就可以生成对应的c_leak_txt文件了。

后面解析之后具体使用到的文件就是 c_leak.txt、c_heap.txt、PROCESS_MAPS、PROCESS_MAPS_RAW这几个文件。然后给到开发来分析一下具体的问题就可以了  

 

工具包:包含GAT和SpOfflineDebugSuite 、c_leak.txt、libc.so链接:

链接: https://pan.baidu.com/s/1OzFBzRbsUtsFwy8EXkjkZw  密码: o8d9



标签:文件,shell,libc,coredump,MTK,adb,工具,解析
From: https://www.cnblogs.com/sukkimy/p/16642517.html

相关文章

  • 5个免费的开发工具来提高你的日常工作效率
    5个免费的开发工具来提高你的日常工作效率_好的!!_有一段时间没有写,但我们回来了。为了恢复,我每天都在想我想分享的事情,然后我记得今年2022年我被介绍给一个工具,我必......
  • 网卡限速工具之WonderShaper
    GreatSQL社区原创内容未经授权不得随意使用,转载请联系小编并注明来源。GreatSQL是MySQL的国产分支版本,使用上与MySQL一致。什么是WonderShaper如何安装WonderShaper......
  • 新款FTP替代工具重磅登场!怎样摆脱传统FTP弊端?
    毫不夸张的说,几乎每个企业都使用过或仍正在使用FTP来实现文档传输。自从1971年第一标准版本的发布,已经有越来越多的FTP产品出现。目前仍然有许多企业仍然在使用FTP,也有很多......
  • 如何使用 chrome 开发工具阻止某些请求
    如何使用chrome开发工具阻止某些请求Photoby菲利普斯文本on不飞溅有时我们想禁用一些API请求来测试一些功能。以下是如何使用chrome开发工具来阻止API请......
  • Linux快速入门(七)效率工具(Vim)
    Vim编辑器所有的Linux系统都会内建一个Vi文本编辑器,而Vim是从Vi发展出来的一个高度可配置的文本编辑器,旨在高效的创建和更改任何类型的文本,它还可以根据文件的扩展名判别......
  • Linux快速入门(八)效率工具(SSH)
    环境(1)Kali(源主机),IP:10.211.55.4/24(2)Ubuntu(目标主机),IP:10.211.55.5/24SSHOpenSSH用于在远程系统上安全的运行Shell,假设现在需要在Kali机器上通过root用户远程登陆另一......
  • Linux操作系统中修改putty工具的ssh端口号(22)
    Linux服务器为了保证安全,需修改putty远程的默认端口22,具体操作步骤:1.在Linux服务器中登录用户名和密码(用root用户登录);2.输入vim /etc/ssh/sshd_config3.上下箭头移动......
  • 工具函数(JavaScript)——如何判断设备是不是移动端
    浏览器有一个Navigator接口,表示用户代理的状态和标识。Navigator.userAgent可以知道客户端的设备类型。请求的请求标头有一个user-agent字段,内容中包含了设备型号的信......
  • TCGA数据库的挖掘工具
    TCGA数据库的挖掘工具TCGA数据库的挖掘工具层出不穷,从数据下载到数据挖掘,这里marker整理一份官网的数据挖掘工具大全:http://www.cancerimagingarchive.net/TheCancer......
  • Java按位操作工具类
    /***Bit转换工具*/@SuppressWarnings({"WeakerAccess","unused"})publicclassConvertBit{/***短整型(int16)数据中包含的有效bit数量*/......