Подтвердить что ты не робот

Отладка в HHVM?

При запуске моих PHP-скриптов в HHVM я вижу, что могу передавать аргументы debug-host и debug-port, но я не могу точно понять, что он делает и как его использовать.

Являются ли эти аргументы для отладки самого HHVM (или, возможно, самого скомпилированного PHP), или это для отладки PHP скрипт? То есть, это для отладки пути что HHVM работает, или это для отладки, как я обычно делал бы с XDebug, скажем?

Сначала я попытался подключить его к моей среде IDE, которая настроена для XDebug, но это, похоже, не делает ничего такого, чтобы не пойти на дикую охоту за гусями. Я думал, что попрошу здесь.

Каковы аргументы отладки для HHVM, и как я могу их использовать для отладки моих PHP-скриптов в HHVM, пожалуйста?

4b9b3361

Ответ 1

Получение удаленной отладки работало довольно сложно и связано с некоторыми ошибками и недоразумениями в документации.

Вы должны настроить то, что они называют "песочница" на стороне сервера.

Затем вам нужно использовать другой экземпляр hhvm, вызванный с -m debug -h, для присоединения отладчика к запущенному серверу. Затем вы можете использовать полные функции отладчика.

Я написал статью описывающую процесс.

Ответ 2

Кажется, что HHVM добавляет XDebug в версии 3.3.0 LTS. Понятно, что это еще не готово. Вы можете включить его, добавив опции 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

Ответ 3

Немного вникая в это, я нашел это: https://github.com/dpaneda/hiphop-php/blob/master/doc/command.compiled, в котором говорится:

= --debug-host

При запуске режима "отладки" указывает, к какому серверу HPHPi подключиться.

= --debug-port

При запуске режима "отладки" указывается, какой порт сервера HPHPi подключается.

Таким образом, очевидно, что это были первоначально для HPHPi (Hip Hop Interpreter), который был заменен HPVM (Hip Hop Virtual Machine).

Любопытно, что в виртуальной машине говорится:

-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

Ответ 4

В ответ на Lance Badger:

3.4.0 переименован в xdebug-not-done в xdebug. Поэтому раздел xdebug вашего php.ini должен выглядеть так:

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

Источники: Проблема 4348, Запрос Pull 3779

Ответ 5

Итак, с указателями от циллеза, я нашел следующее:

Если я хочу запустить script из CLI, я могу просто использовать hhvm script_name.php. Однако, если я хочу его отладить, я могу запустить hhvm -m d script_name.php, который поместит меня в отладчик для запуска script.

Используя -m s, я могу запустить HHVM в режиме сервера. Я полагаю, что это то, к чему относятся --debug-host и --debug-port. То есть, если я запускаю один экземпляр HHVM в режиме сервера где-то, я могу подключиться из другого экземпляра HHVM, когда он работает в режиме отладки. Я думаю.