获得XHProf可视化(Graphviz和dot的问题)工作

时间:2015-05-19 13:05:21

标签: php profiling graphviz dot xhprof

我安装了XHProf,希望看到调用图可视化。我点击View Full Callgraph并首先收到以下信息:

  

无法执行cmd:“dot -Tpng”。 stderr:`sh:dot:command not found'

经过一些谷歌搜索后,我发现它是由未安装Graphviz引起的。然后我安装了它:

$ yum install graphviz

再次尝试。现在我收到以下错误消息:

  

无法执行cmd:“dot -Tpng”。 stderr:`错误:/ usr / lib64 / graphviz / config6是零大小或其他读错误。

     

错误:/ usr / lib64 / graphviz / config6为零大小或其他读取错误。

     

“dot”

没有布局引擎支持      

也许需要运行“dot -c”(使用安装程序的权限)才能注册插件?

     

确实执行dot -c会导致错误:

$ dot -c
Error: /usr/lib64/graphviz/config6 is zero sized, or other read error.
Warning: Could not load "/usr/lib64/graphviz/libgvplugin_pango.so.6" - file not found
Warning: Could not load "/usr/lib64/graphviz/libgvplugin_xlib.so.6" - file not found
Segmentation fault

但文件libgvplugin_pango.so.6libgvplugin_xlib.so.6位于/usr/lib64/graphviz/

$ ls -l /usr/lib64/graphviz
total 724
...
lrwxrwxrwx 1 root root     26 May 19 13:58 libgvplugin_pango.so.6 -> libgvplugin_pango.so.6.0.0
-rwxr-xr-x 1 root root  22408 Sep 19  2012 libgvplugin_pango.so.6.0.0
lrwxrwxrwx 1 root root     25 May 19 13:58 libgvplugin_xlib.so.6 -> libgvplugin_xlib.so.6.0.0
-rwxr-xr-x 1 root root  15656 Sep 19  2012 libgvplugin_xlib.so.6.0.0

好吧,作为符号链接。但这应该不重要。无论如何,我也测试了这个案例:

mv /usr/lib64/graphviz/libgvplugin_pango.so.6 /usr/lib64/graphviz/libgvplugin_pango.so.6_DEACT
mv /usr/lib64/graphviz/libgvplugin_xlib.so.6 /usr/lib64/graphviz/libgvplugin_xlib.so.6_DEACT
cp /usr/lib64/graphviz/libgvplugin_pango.so.6.0.0 /usr/lib64/graphviz/libgvplugin_pango.so.6
cp /usr/lib64/graphviz/libgvplugin_xlib.so.6.0.0 /usr/lib64/graphviz/libgvplugin_xlib.so.6

没有效果,仍然是同样的错误。

这里的错误是什么?以及如何使其正常工作?

环境:使用CentOS 6作为访客系统的VirtualBox VM。

2 个答案:

答案 0 :(得分:0)

我终于搞定了。

简短回答

我猜 yum update 或/和 ann-libs安装可能是决定性的一步(-s)。但这仅仅是一个假设,因此我描述了可能很重要的所有步骤(见下文)。

详细答案

首先,我尝试使用相关软件包安装graphviz

$ yum install 'graphviz*'

但安装不起作用:

Error: php56w-common conflicts with php-common-5.3.3-46.el6_6.x86_64
 You could try using --skip-broken to work around the problem
** Found 1 pre-existing rpmdb problem(s), 'yum check' output follows:
cairo-1.8.8-3.1.el6.x86_64 has missing requires of libpixman-1.so.0()(64bit)

然后我尝试了同样的方法,但之前将graphviz-rhel.repo添加到了存储库:

$ cd /etc/yum.repos.d/
$ wget http://www.graphviz.org/graphviz-rhel.repo
$ yum list available 'graphviz*'
$ yum install 'graphviz*'

失败了另一个错误:

Error: Package: graphviz-2.38.0-1.el6.x86_64 (graphviz-stable)
           Requires: libANN.so.1()(64bit)
 You could try using --skip-broken to work around the problem
** Found 1 pre-existing rpmdb problem(s), 'yum check' output follows:
cairo-1.8.8-3.1.el6.x86_64 has missing requires of libpixman-1.so.0()(64bit)

正如预期的那样,--skip-broken也没有取得成功。

之后我做了多件事:yum clean allyum erase 'graphviz*'ann-libs安装和yum update

$ yum clean all
$ yum install 'graphviz*'
$ yum erase 'graphviz*'
$ cd ~/temp/
$ wget http://dl.fedoraproject.org/pub/epel/6/x86_64/ann-libs-1.1.1-4.el6.x86_64.rpm
$ rpm -i ann-libs-1.1.1-4.el6.x86_64.rpm 
$ yum update

现在可行。

答案 1 :(得分:0)

在某些RHEL 6系统上遇到同样的问题,结果问题是某些X11库上的Graphviz插件的隐藏依赖关系,我可以通过安装以下rpms来安装它:

  • libXau
  • libxcb
  • libXext

所以,这解决了我的问题:yum install gtk2 libXau libxcb libXext