Perf linux 工具:函数名称未显示在符号列中

Perf linux 工具:函数名称未显示在符号列中

我不确定这是否是正确的论坛。

我正在尝试对一个简单的编译的 C 代码进行基准测试,但我无法在性能报告中看到它的主函数和子函数。我看到的只有系统函数和十六进制值。我可以在哪里跟踪我的函数 main() 和 addition()?

#include <stdio.h>
int addition(int num1, int num2)
{
 int sum;
 /* Arguments are used here*/
 sum = num1+num2;

 /* Function return type is integer so we are returning
  * an integer value, the sum of the passed numbers.
  */
 return sum;
 }

  int main()
 {
 int var1=32, var2=23;

 /* Calling the function here, the function return type
  * is integer so we need an integer variable to hold the
  * returned value of this function.
  */
 int res = addition(var1, var2);
 printf ("Output: %d", res);

 return 0;
  }

我使用 编译了它gcc t.c -g -fno-omit-frame-pointer -o tperf -g report ./t perf record -g

我无法在符号列中看到我的功能。 报告

答案1

我检查了您的示例,在我的笔记本电脑(Ubuntu 16.04;性能版本 4.4.128)上,我可以看到函数名称,但不是全部。

我使用命令perf report检查了性能分析,然后我懂了

许多行都是十六进制地址,因为它们对应于内核空间函数,而我不是内核开发人员。如果我没记错的话,perf 工具用于分析或检索有关内核行为的大量信息,因此它不太适合用户空间程序。

你为什么不使用配置文件

相关内容