【问题标题】:How to get function names from profile addresses?如何从配置文件地址获取函数名称?
【发布时间】:2018-05-31 08:26:37
【问题描述】:

我正在 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?

【问题讨论】:

    标签: linux gnu profiler addr2line


    【解决方案1】:

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

    【讨论】:

    • 好主意。介意分享代码或说明吗?会对我和其他人很有帮助。
    猜你喜欢
    • 1970-01-01
    • 2021-12-05
    • 1970-01-01
    • 1970-01-01
    • 2017-05-24
    • 1970-01-01
    • 1970-01-01
    • 2016-12-24
    • 2019-09-07
    相关资源
    最近更新 更多