14

在 HHVM 中运行我的 PHP 脚本时,我看到我可以传递调试主机和调试端口参数,但我似乎无法准确地弄清楚它的作用以及如何使用它。

这些参数是用于调试 HHVM 本身(或者可能是编译后的 PHP 本身)还是用于调试 PHP 脚本?也就是说,是为了调试 HHVM 的工作方式,还是像我通常使用 XDebug 那样进行调试?

起初我试图将它连接到我为 XDebug 设置的 IDE,但这似乎没有做任何事情,所以我想我会在这里问。

HHVM 的调试参数究竟是什么,以及如何使用它们在 HHVM 中调试我的 PHP 脚本?

4

5 回答 5

13

让远程调试工作相当棘手,并且涉及到一些问题和对文档的误解。

您必须在服务器端配置他们所谓的“沙箱”。

然后,您必须使用通过 -m debug -h 调用的另一个 hhvm 实例将调试器附加到正在运行的服务器。然后,您可以从那里使用调试器的全部功能。

我写了一篇文章来描述这个过程

于 2013-12-04T22:15:22.463 回答
6

似乎 HHVM 在 3.3.0 LTS 版本中添加了 XDebug。显然它还没有准备好生产。您可以通过将下面列出的 xdebug 选项添加到 server.ini 文件来启用它。它可以连接,但通常最终会导致我的 HHVM 崩溃。

hhvm.xdebug-not-done.enable=1
hhvm.xdebug-not-done.remote_enable=1
hhvm.xdebug-not-done.idekey="PHPSTORM"
hhvm.xdebug-not-done.remote_host="localhost"
hhvm.xdebug-not-done.remote_port=9089
于 2014-09-29T18:56:07.240 回答
2

回应兰斯獾

3.4.0 将 xdebug-not-done 重命名为 xdebug。因此,您的 php.ini 的 xdebug 部分应如下所示:

xdebug.enable=1
xdebug.remote_enable=1
xdebug.idekey="PHPSTORM"
xdebug.remote_host="localhost"
xdebug.remote_port=9089

来源:问题 4348拉取请求 3779

于 2014-11-28T10:17:13.327 回答
2

稍微研究了一下,我发现了这个:https://github.com/dpaneda/hiphop-php/blob/master/doc/command.compiled它说:

= --调试主机

运行“调试”模式时,指定要附加到哪个 HPHPi 服务器。

= --调试端口

运行“调试”模式时,指定要连接的 HPHPi 服务器端口。

显然,这些最初是为 HPHPi(嘻哈解释器)而被 HPVM(嘻哈虚拟机)取代的。

奇怪的是,虚拟机帮助说:

-h [ --debug-host ] arg 连接到指定地址的调试器服务器

--debug-port arg (=-1) 连接到指定端口的调试器服务器

因此,他们似乎将 CLI 参数重新用于指向“调试器”,但没有提及在我能找到的任何文档中使用它们的内容。

我还发现了一些表明它是如何工作的来源 https: //github.com/facebook/hhvm/blob/5aee62fc5135b089d5c213a6ac243321555f6672/hphp/test/server/debugger/tests/test_base.inc#L6-L38

于 2013-10-18T16:55:26.030 回答
1

因此,根据纤毛病的指示,我发现了以下内容:

如果我想从 CLI 运行脚本,我可以使用hhvm script_name.php. 但是,如果我想调试它,我可以运行它,hhvm -m d script_name.php这将使我进入一个调试器来运行脚本。

使用-m s我可以在服务器模式下运行 HHVM。那么,我相信这就是--debug-hostand--debug-port所指的内容。也就是说,如果我在某处以服务器模式运行一个 HHVM 实例,那么当它在调试模式下运行时,我可以从另一个 HHVM 实例进行连接。我认为。

于 2013-10-18T17:45:31.940 回答