如何从配置文件地址获取函数名称?

时间:2017-12-18 01:03:05

标签: linux gnu profiler addr2line

我在Linux中整理了一个性能分析器,但我无法将收集的堆栈跟踪信息映射到函数名称。

我目前正在通过我的后期处理代码

调用addr2line
  FILE* pipe = popen("addr2line -f -i -s -C -e <libname> <address>", "r");
  if (!pipe) return;

  const size_t BUFFER_SIZE = 8192;
  char buffer[BUFFER_SIZE];
  string result;
  while (!feof(pipe))
  {
    if (fgets(buffer, BUFFER_SIZE, pipe) != NULL)
    result += buffer;
  }

  pclose(pipe);

然而,这非常慢,因为我的个人资料有很多样本。有没有像addr2line这样的其他实用程序更快或者我能以比我更有效的方式调用addr2line吗?

1 个答案:

答案 0 :(得分:0)

我通过修改addr2line实用程序的源代码并将其转换为库来解决此问题。所以我现在将这个库加载到我的配置文件分析器中并调用'addr2line'就像它是一个函数一样!