小编给大家分享一下openwrt+perf+热点函数分析的示例,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!
1.1 背景
最近玩起了openwrt,perf工具对分析程序性能有帮助,可以分析热点函数,所以就想把它搞上系统上,折腾挺长时间的
*1.2 准备工作 *
安装vmware,安装ubuntu,把ubuntu设置成桥接(或者nat也行,配置成桥接目的是为了能让windows能通过xshell工具或者winscp工具和ubunut传输文件),并能上网,编译openwrt需要联网,编译过程中,会自动下载一些所有需要的lib,第一次编译openwrt固件需要很长时间。
*1.3 配置内核开始编译 *
make menuconfig 进入内核配置界面,“/”搜索perf工具,需要开启哪些编译选项。
开启perf工具需要glibc
依次进入以下选项,进行选择
按下"/"搜索glic的位置在哪
"(x)"表示不选中,”( )“表示选中
perf工具可以选上了
1.4 退出,进入主界面
make V=99编译,(如果是第一次编译最好不要用多线程,第一次成功后可以make V=99 -j(n)(多线程编译)
经过漫长的编译,终于成功,第一次编译,可能要10个小时,中间出错的话,绝招是缺啥补啥,编译好的固件大小为9.8M
*1.5 烧写到mt7688的板子上看看效果如何 *
perf top -p 进程pid -K -g
看不到函数名字是因为除了应用程序要加-g 参数编译之后,像libc.so,等等库也要加-g参数编译,openwrt默认是把库strip了,自己写的程序,可以自己写makefile加-g编译,像这些libc.so这些库的话,因为openwrt编译过程,会把libc.so保留一个没有strip的,所以直接编译完固件之后
在固件源码处find xxx -iname libc.so,把没有strip的库用winwscp工具,传到mt7688的/lib/下面(记录是以覆盖的方式,不要删除libc.so,再拷贝),再次使用perf工具,就能看到libc.so的函数名了,其它库也一样。
以上是“openwrt+perf+热点函数分析的示例”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注亿速云行业资讯频道!
原创文章,作者:745907710,如若转载,请注明出处:https://blog.ytso.com/tech/opensource/219986.html