我正在使用 xhprof 来分析应用程序。我需要知道的是每个函数来自哪个文件,因为有些函数是全局的,有些函数有重复的名称(这是遗留代码,不要判断!;)从我所看到的 xhprof 不会返回此数据它的输出,还有人知道吗?
我希望我不必修改 xhprof 的源代码来返回这些数据...... :-)
谢谢你的帮助!
我正在使用 xhprof 来分析应用程序。我需要知道的是每个函数来自哪个文件,因为有些函数是全局的,有些函数有重复的名称(这是遗留代码,不要判断!;)从我所看到的 xhprof 不会返回此数据它的输出,还有人知道吗?
我希望我不必修改 xhprof 的源代码来返回这些数据...... :-)
谢谢你的帮助!
只是想说我是如何解决这个问题的,以防其他人发现它有用。
最后我不得不修改xhprof源,但这是一个小改动。
在 xhprof.c 中,找到一个名为 *hp_get_function_name 的函数,并将以下内容添加到变量列表的开头“int len;”之后 :
char *finalName = NULL;
int finalLen;
然后在该函数的末尾,交换显示“return 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==>bar)。
自从我完成 C 编程以来已经有一段时间了,所以可能有更好的方法来做这件事,但它为我完成了这项工作。
然后在您的 iXHProfRuns 实现中解析此输出很容易 - 您只需将字符串分解为 | 分别获取文件路径和函数名。
希望这可以帮助!