【发布时间】:2013-08-29 07:25:35
【问题描述】:
您可能已经阅读过这个问题: how can i get perf to find symbols in my program
1)我的问题是:
当我使用 perf report 时,它会给出如下结果:
# Overhead Command Shared Object Symbol
# . .
#
99.59% test test [.] 0x000003d4
0.21% test [kernel.kallsyms] [k] __do_fault
0.10% test [kernel.kallsyms] [k] run_timer_softirq
0.10% test [kernel.kallsyms] [k] __update_cpu_load
0.01% test [kernel.kallsyms] [k] set_task_comm
0.00% test [kernel.kallsyms] [k] intel_pmu_enable_all
即:perf 可以在内核中找到符号,但在我的程序中找不到符号。
我的程序在这里:
void longa()
{
int i,j;
for(i = 0; i < 1000000; i++)
j=i; //am I silly or crazy? I feel boring and desperate.
}
void foo2()
{
int i;
for(i=0 ; i < 10; i++)
longa();
}
void foo1()
{
int i;
for(i = 0; i< 100; i++)
longa();
}
int main(void)
{
foo1();
foo2();
}
2)我已经编译了这样的程序:
gcc test.c -g -o 测试
我的环境:os:ubuntu kernel:3.10.9
【问题讨论】:
-
你解决了吗?我也遇到过类似的问题,就是它没有正确清理 obj 文件。
-
我还没有解决这个问题。您的意思是“清理 obj 文件后它可以工作”吗?没有我的obj文件,只有elf和c文件。
-
我已经解决了这个问题。您可以通过 yzark 看到下面的解决方案
标签: linux performance perf