在 WinCacheGrind 中打开 CacheGrind 文件时缺少函数名称

Posted

技术标签:

【中文标题】在 WinCacheGrind 中打开 CacheGrind 文件时缺少函数名称【英文标题】:Missing function names when opening CacheGrind file in WinCacheGrind 【发布时间】: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

【问题讨论】:

尝试阅读本手册:- xdebug.org/docs/execution_trace。另外:- xdebug.org/docs/all_settings 我在做脚本分析,而不是函数跟踪。格式选项用于函数跟踪。 【参考方案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 用于文件名和符号名。

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

Wingrind does not understand compressed file and function names XDebug 0001054: Profiler files need to support filename, function name compression XDebug 0001115: Profiler does not output filename or function values Pull Req at XDebug: Implement issue #1054: Profiler support for filename and function name compression

【讨论】:

以上是关于在 WinCacheGrind 中打开 CacheGrind 文件时缺少函数名称的主要内容,如果未能解决你的问题,请参考以下文章

Modx Evo / Debian 9:无法打开文件(/assets/cache//sitePublishing.idx.php)

Laravel 权限被拒绝 bootstrap/cache/packages.phpkC7P4V 无法打开流:权限被拒绝

file_put_contents(.../bootstrap/cache/services.json):无法打开流:没有这样的文件或目录

/srv/share/ykant3/pythia/vector_cache/wiki.en.bin 无法打开加载

lsi raid卡问题 1.disk cache policy 打开的意义有多大,考虑打开write back的情况下针对写入,请懂行的

java.io.FileNotFoundException:/cache/recovery/uncrypt_file:打开失败:EACCES(权限被拒绝)