【发布时间】:2015-09-08 01:22:01
【问题描述】:
我正在尝试使用 perf 来分析我的 Android 应用程序。
在fplutil项目的帮助下,我设法在Android设备上安装了perf,在主机上运行perf record然后perf report。
通常当我运行perf report -g 时,我希望看到类似于此的调用图:
47.91% a.out a.out [.] f5()
|
--- f5()
|
|--53.82%-- f4()
| |
| |--56.16%-- f3()
| | |
| | |--49.14%-- f2()
| | | |
| | | |--52.92%-- f1()
| | | | a()
| | | | main
| | | | __libc_start_main
| | | |
| | | --47.08%-- a()
| | | main
| | | __libc_start_main
但是,当我为在 Android 设备上收集的数据执行 perf report 时,我看不到正确的调用图,例如堆栈未正确展开:
4.98% app_name my_lib.so [.] void quat_apply<double>(double*, double const*, double const*, int, double)
|
--- 0xbee75fe4
|
--- 0xbee760c4
|
--- 0xbee75c0c
如何将这些十六进制地址替换为函数名?
我已经在使用-g 和-fno-omit-frame-pointer 构建我的代码,我还缺少什么吗?
【问题讨论】:
标签: android linux profiling perf