我正在使用xhprof来分析应用程序。我需要知道的是每个函数来自哪个文件,因为有些函数是全局的,有些函数有重复的名称(它是遗留代码,不要判断!;)从我看到的内容xhprof不会返回这些数据它的输出,有没有人知道呢?
我希望我不必修改xhprof的源代码来返回这些数据......: - )
感谢您的帮助!
答案 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的实现中很容易解析这个输出 - 你只需要将字符串分解为|分别获取文件路径和函数名称。
希望这有帮助!