0

我正在尝试在 AWS 云中的远程服务器上安装 Xdebug 以进行分析。我安装了 Xdebug 我使用 phpinfo() 检查并保留了一些设置以在服务器上启用分析选项,我验证它已启用。

我将 pro filer 的输出日志保存在远程服务器上的目录中。现在我想使用 Kcachedgrind 打开这些文件。所以我安装了 Kcachesgrind。

我在 PHP.ini 文件中使用的设置如下。

zend_extension="/opt/lampp/lib/php/extensions/no-debug-non-zts-20060613/xdebug.so"
xdebug.profiler_output_dir = "/opt/lampp/htdocs/profiler/logs"
xdebug.profile_output_name = cachegrind.out.%t-%s
xdebug.remote_enable=On
xdebug.remote_host="ip-10-125-11-57"
xdebug.remote_port=9000
xdebug.remote_handler="dbgp"
xdebug.show_local_vars=On
xdebug.collect_return=On
xdebug.collect_params=4
xdebug.profiler_enable=On
xdebug.profiler_enable_trigger=1

在上述设置中,您可以看到名为 xdebug.remote_host 的文件,通常它是本地主机,但我在远程服务器中,所以我将服务器的主机名保留在那里。当我尝试使用 Kcachegrind 打开文件时出现以下错误。

Kcachegrind: Can't connect to X server
4

2 回答 2

2

你基本上有两个明智的选择:

  1. 将文件从远程服务器下载到本地计算机并在那里进行调试。如果您对每次都必须下载文件感到恼火,请以某种方式自动执行任务。

  2. 使用命令行实用程序评估文件(xdebug 文档提到 ct_annotate),请参见此处:http: //xdebug.org/docs/profiler

我强烈建议选项1。

请注意,Kcachegrind 是一个带有 GUI(图形用户界面)的程序,意思是:它有窗口和按钮之类的东西。您的远程服务器通常不需要任何 GUI 软件,因此不支持安装的窗口和按钮以及类似的东西(没有 X 服务器,没有 KDE 等...)。虽然 TeTeT 解决方案在理论上是可行的,但请不要在远程服务器上安装 X 并通过 vnc 连接。它很慢,会占用大量的硬盘空间和内存,对于初学者来说是一个陡峭的学习曲线。

于 2014-07-18T10:48:38.730 回答
0

如果你真的想在服务器上调试它,你需要为它安装 X 和一个桌面并通过 vnc 连接。

也许将调试和配置文件复制到本地系统并在那里检查它们也可以。

于 2013-06-03T13:30:08.320 回答