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


Missing function names when opening CacheGrind file in WinCacheGrind

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

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

如果我尝试使用WinCacheGrind打开一个文件,它会变成一个错误。此外,我安装了webgrind,输出仅显示数字。有时有一个文件名,但文件名前面有一个数字。点击它会导致一个错误。

版本:1创建者:xdebug 2.3.2cmd:/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图像

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

但它与QCacheGrind 0.7.4兼容我安装了它,发现了web服务器性能不佳的原因。

自XDebug 2.3以来,为了节省一些空间,重复的文件和函数名已被数字替换,因此请确保您的cachegrind格式支持"文件名";以及";函数名称";压缩。

请参阅:在XDebug 评测PHP脚本

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

有关名称压缩的更多详细信息,请查看Callgrind格式规范。以下是一些简介:

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

为了支持名称压缩,位置规范不仅可以是"压缩"格式;CCD_ 1";,而且";CCD_ 2";指定整数ID到名称的映射;CCD_ 3";以引用先前定义的ID映射。每个位置规范都有一个单独的ID映射,即文件名和符号名都可以使用ID 1。

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

  • Wingrind不理解压缩文件和函数名
  • XDebug 0001054:档案器文件需要支持文件名、函数名压缩
  • XDebug 0001115:探查器不输出文件名或函数值
  • XDebug上的Pull Req:实现问题#1054:档案器对文件名和函数名压缩的支持