前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >全志平台Tina系统内存调试的方法(valgrind、pmap、手工释放内存)

全志平台Tina系统内存调试的方法(valgrind、pmap、手工释放内存)

作者头像
阿志小管家
发布2024-02-02 14:57:40
1170
发布2024-02-02 14:57:40
举报

全志平台Tina系统内存调试的方法(valgrind、pmap、手工释放内存)

以R18 yocto为例

valgrind

valgrind是个开源的工具,可以用来检查内存泄露等,全志平台上有移植,官网地址:

http://valgrind.org/downloads/current.html#current

valgrind使用方法:

1.在.bb文件里把 valgrind配置上:

yocto/sources/meta-tina/recipes-core/images$ git diff . diff --git a/recipes-core/images/image-tulip-mozart-chromium.bb b/recipes-core/i index b7663b1..940c7ef 100644 --- a/recipes-core/images/image-tulip-mozart-chromium.bb +++ b/recipes-core/images/image-tulip-mozart-chromium.bb @@ -23,6 +23,7 @@ base_install = " \ fake-hwclock \ crash-handler \ opkg \ + valgrind \ "

2.把yocto/build/conf/local.conf下的BB_NO_NETWORK设置为0

BB_NO_NETWORK = "0"

3.设备端命令行:

valgrind --log-file=/tmp/valgrind.log --tool=memcheck --leak-check=full SampleApp /etc/avs/AlexaClientSDKConfig.json /etc/avs/ DEBUG9

sample-wakeup /etc/avs/config.json

即把命令sample-wakeup /etc/avs/config.json放到valgrind里跑

不过跑的时候发现这个demo在valgrind里跑会一直over run报错:

info: AlsaUtils.cpp(fetch,140): hw:sndac1082003b,0, overrun occurred info: AlsaUtils.cpp(fetch,140): hw:audiocodec,0, overrun occurred error: InterleavedConvertor.cpp(convert,111): input param error, data: 0x66be800, samples: 0

应该是因为valgrind本身也吃内存拖慢了进程造成的

pmap

pmap查看进程的内存映像信息(report memory map of a process)

1.ps查看进程号

2.pmap -d 1437

......

0000007fa0dfc000 24 r---- 00000000000bd000 0b3:00005 libsampleapp.so 0000007fa0e02000 4 rw--- 00000000000c3000 0b3:00005 libsampleapp.so 0000007fa0e03000 4 rw--- 0000000000000000 000:00000 [ anon ] 0000007fa0e04000 116 r-x-- 0000000000000000 0b3:00005 ld-2.26.so 0000007fa0e23000 32 rw-s- 0000000000000000 000:00006 pcmC1D0p 0000007fa0e2b000 4 rw-s- 0000000000000000 000:00005 [ shmid=0xf0000 ] 0000007fa0e2c000 8 rw--- 0000000000000000 000:00000 [ anon ] 0000007fa0e2e000 4 r---- 0000000000000000 000:00000 [ anon ] 0000007fa0e2f000 4 r-x-- 0000000000000000 000:00000 [ anon ] 0000007fa0e30000 4 r---- 000000000001c000 0b3:00005 ld-2.26.so 0000007fa0e31000 4 rw--- 000000000001d000 0b3:00005 ld-2.26.so 0000007fa0e32000 4 rw--- 0000000000000000 000:00000 [ anon ] 0000007fcb296000 132 rw--- 0000000000000000 000:00000 [ stack ] mapped: 2546816K writeable/private: 489532K shared: 100K 最后一行的值 mapped:表示该进程映射的虚拟地址空间大小,也就是该进程预先分配的虚拟内存大小,即ps出的vsz writeable/private:表示进程所占用的私有地址空间大小,也就是该进程实际使用的内存大小 shared:表示进程和其他进程共享的内存大小

手工释放内存

echo 3 > /proc/sys/vm/drop_caches

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2024-02-02,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档