【问题标题】:Missing function names when opening CacheGrind file in WinCacheGrind在 WinCacheGrind 中打开 CacheGrind 文件时缺少函数名称
【发布时间】:2015-03-27 15:10:05
【问题描述】:

见鬼去吧。我在 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 image

【问题讨论】:

标签: php format profiling xcache webgrind


【解决方案1】:

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

但是它与 QCacheGrind 0.7.4 兼容 我安装了它,并在 Web 服务器中找到了性能不佳的根源。

【讨论】:

  • 给未来的访问者一个提示:它现在在 Webgrind 中运行良好。
【解决方案2】:

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

见:Profiling PHP Scripts at XDebug

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

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

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

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

同时检查这些错误报告的状态:

【讨论】:

    猜你喜欢
    • 2013-08-30
    • 1970-01-01
    • 2019-11-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-10-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多