2013-10-18 55 views
13

當在HHVM中運行我的PHP腳本時,我發現我可以傳遞一個調試主機和調試端口參數,但我似乎無法確切知道它的功能以及如何使用它。在HHVM中調試?

這些參數是用於調試HHVM本身(或者編譯的PHP本身)還是用於調試PHP腳本?也就是說,它是否用於調試HHVM工作的方式 ,還是用於調試,正如我通常對XDebug所做的那樣?

起初我試圖將它連接到我爲XDebug設置的IDE,但是這似乎沒有做任何事情,所以如果不進行大膽的追逐,我想我會在這裏問。

HHVM的調試參數到底是什麼,我該如何使用它們在HHVM中調試我的PHP腳本?

回答

2

做一個小小的尋找到這一點,我發現這一點:https://github.com/dpaneda/hiphop-php/blob/master/doc/command.compiled它說:

= --debug主機

當運行「調試」模式,指定哪些HPHPi服務器連接到。

= --debug端口

當運行 「調試」 模式,指定哪個服務器HPHPi端口連接。

因此很明顯,那些原本用於這是由HPVM(嘻哈虛擬機)取代了HPHPi(嘻哈解釋)。

奇怪的是,虛擬機幫助說:

-h [--debug主機] ARG連接在指定地址到調試器的服務器

-debug端口ARG(= -1)連接到調試服務器在指定的端口

所以看來他們改變用途的CLI參數指向「調試」,但沒有提及的是我能找到的任何文檔中使用什麼他們。

我也發現了一些源的其中排序表明它是如何工作的:https://github.com/facebook/hhvm/blob/5aee62fc5135b089d5c213a6ac243321555f6672/hphp/test/server/debugger/tests/test_base.inc#L6-L38

+0

有趣......從DOC和回頭看的CLI選項,我可以在具體運行HHVM「調試模式'...所以現在我有其他的東西可以開始了。我不知道它是否會讓我到任何地方,但我們會看到。謝謝! – Narcissus

+1

@Narcissus文章剛剛彈出我的雷達,也可能是有用的http://labs.qandidate.com/blog/2013/10/29/debugging-php-applications-with-hhvm/ –

1

所以從cillosis指針,我發現如下:

如果我要運行腳本從CLI中,我可以使用hhvm script_name.php。但是,如果我想調試它,我可以運行hhvm -m d script_name.php這將使我進入調試器來運行腳本。

使用-m s我可以在服務器模式下運行HHVM。那麼我相信,那就是--debug-host--debug-port所指的。也就是說,如果我以某種方式在服務器模式下運行HHVM的一個實例,那麼當它以調試模式運行時,我可以從另一個HHVM實例進行連接。我認爲。

+0

+1很高興我是能夠將您指向正確的方向! –

13

獲得遠程調試工作相當棘手,涉及文檔的一些細節和誤解。

你必須在服務器端配置他們稱之爲「沙盒」的東西。

然後,您必須使用-m debug -h調用的另一個hhvm實例將調試器附加到正在運行的服務器。從那裏你可以使用調試器的全部功能。我寫了一個article describing the process

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 
+0

看來有什麼缺失。不適合我這樣的工作。 – tback

+0

如果你正在使用3.4我認爲他們刪除了xdebug-not-done –

+0

你是對的。我今天也注意到它併發布了一個回覆http://stackoverflow.com/a/27186444/246241。 – tback

2

在應對Lance Badger

3.4.0改名Xdebug的 - 不做到Xdebug的。因此,你的php.ini文件的Xdebug的部分應該是這樣的:

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

來源:Issue 4348Pull Request 3779