【问题标题】:Does xhprof log the file where the function came from?xhprof 是否记录函数来自的文件?
【发布时间】:2014-05-27 10:54:14
【问题描述】:

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

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

感谢您的帮助!

【问题讨论】:

    标签: xhprof


    【解决方案1】:

    只想说一下我是如何解决这个问题的,以防其他人觉得它有用。

    最后我不得不修改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 实现中解析此输出很容易 - 您只需将字符串分解为 |分别获取文件路径和函数名。

    希望这会有所帮助!

    【讨论】:

    • 在哪里可以看到结果或记录在哪里?
    • 与您使用未修改的 xhprof 时相同的位置,即。如果您使用 XHProfRuns_Default 它将被保存到文件系统。查看“a) 持久保存 XHProf 数据”下的 github.com/phacility/xhprof/blob/master/… 以查看其完成方式的示例
    猜你喜欢
    • 2016-03-11
    • 2012-04-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-06-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多