xhprof是否记录函数来自的文件?

时间:2014-05-27 10:54:15

标签: xhprof

我正在使用xhprof来分析应用程序。我需要知道的是每个函数来自哪个文件,因为有些函数是全局的,有些函数有重复的名称(它是遗留代码,不要判断!;)从我看到的内容xhprof不会返回这些数据它的输出,有没有人知道呢?

我希望我不必修改xhprof的源代码来返回这些数据......: - )

感谢您的帮助!

1 个答案:

答案 0 :(得分:3)

我想说的是我如何解决这个问题,以防其他人发现它有用。

我最后必须修改xhprof源,但这是一个很小的改变。

在xhprof.c中,找到一个名为* hp_get_function_name的函数,并在" int len;"之后将以下内容添加到开头的变量列表中。 :

  char              *finalName = NULL;
  int                finalLen;

然后在该功能结束时,交换显示"返回ret;"为了

finalLen = strlen(ret) + strlen(ops->filename) + 10;
finalName = (char*)emalloc(finalLen);
snprintf(finalName, finalLen, "%s|%s", ops->filename, ret);

return finalName;

这将在文件路径前面加上一个管道(|)到每个函数名称,例如/path/to/foo.php|foo==>bar(没有这个修改,xhprof只输出foo ==&gt ;巴)

我已经有一段时间了,因为我已经完成了C编程,所以可能有更好的方法来做到这一点,但它为我完成了这项工作。

在iXHProfRuns的实现中很容易解析这个输出 - 你只需要将字符串分解为|分别获取文件路径和函数名称。

希望这有帮助!