4

地狱所有。我在 apache/php 服务器上安装了 XDEBUG 作为 ZEND 模块。它输出分析文件,但输出不包含函数名称,仅包含数字。

我看起来不像其他 cachegrind 输出文件。我的文件有数字而不是函数/文件名。

如果我尝试使用 WinCacheGrind 打开文件,则会出错。我还安装了 webgrind,输出只显示数字。有时有一个文件名,但文件名前面有一个数字。单击它会导致错误。

版本:1 创建者:xdebug 2.3.2 cmd:/backup/united/public_html/member.php 部分:1 职位:行

事件:时间

fl=(1) php:internal
fn=(1) php::define
7 5

fl=(1)
fn=(1)
51 3

fl=(1)
fn=(1)
52 1

fl=(1)
fn=(1)
53 1

fl=(1)
fn=(1)
54 1

fl=(1)
fn=(1)
55 1

fl=(1)
fn=(1)
57 1

fl=(1)

查看Webgrind 图像

4

2 回答 2

5

我发现 Xdebug 2.3.2 有一种与 webgrind 和其他可视化工具不兼容的新格式。这就是为什么可视化不包括函数名称的原因。

但是它与 QCacheGrind 0.7.4 兼容,我安装了它,发现 Web 服务器性能不佳的根源。

于 2015-03-30T23:30:41.760 回答
2

从 XDebug 2.3 开始,重复的文件名和函数名已被数字替换以节省一些空间,因此请确保您的 cachegrind 格式支持“文件名”和“函数名”压缩。

请参阅:在 XDebug 中分析 PHP 脚本

Windows 用户也可以使用 WinCacheGrind。该功能与 KCacheGrind 不同,因此本页上记录使用 KCacheGrind 的部分不适用于该程序。WinCacheGrind 目前还不支持 Xdebug 2.3 引入的 cachegrind 文件的文件和函数压缩。

有关名称压缩的更多详细信息,请查看Callgrind 格式规范。这里有一些简短的:

随着调用等关联规范的引入,需要多次指定相同的函数或相同的文件名。由于 C++ 中的绝对文件名或符号名可能很长,因此能够为位置规范指定整数 ID 是有利的。这里,术语“位置”对应于文件名(源文件或目标文件)或函数名。

为了支持名称压缩,位置规范不仅可以是“ spec=name”格式,还可以是“ spec=(ID) name”来指定整数ID到名称的映射,以及“ spec=(ID)”来引用先前定义的ID映射。每个位置规范都有一个单独的 ID 映射,即您可以将 ID 1 用于文件名和符号名。

还要检查这些错误报告的状态:

于 2015-07-21T09:42:34.417 回答