PhpStormとHHVMの内部Xdebugをvagrantボックスでうまく再生するのに問題があります。以下は私のphp.iniです。
xdebug.enable=1
xdebug.remote_enable=1
xdebug.idekey="PHPSTORM"
xdebug.remote_host="10.0.2.2"
xdebug.remote_autostart=0
xdebug.remote_connect_back=1
PhpStormはポート9000でリッスンしています。最初の実行時にすべてのリモートサーバーを削除すると、PhpStormは通常の「Xdebugからの着信接続」を表示します。
正しいマッピングを選択し、最初のブレークポイントがヒットした後、HHVMは504ゲートウェイタイムアウトを返す前にハングしているように見えます。ブレークポイントを削除すると、ロードは瞬時に行われるため、PhpStormとXdebugが通信しているように見えますが、デバッグウィンドウにスタック情報/ブレークポイントコントロールが表示されることはありません。
誰かがポインタを持っていますか?私の考えは次のとおりです:1)通信がどこかにぶら下がっているのでVargrantボックスのポートを開く必要があります2)HHVM / PhpStormのバグ(ありそうもない)
私はUbuntu14.04、Vagrant1.6.5を使用しています
VMも14.04で、Nginx + HipHop VM 3.4.1、拡張API:20140829
PhpStorm 8.0.2
Xdebugリモート接続のvagrantボックスへのログオンを有効にしました。これが出力です。
Log opened at[2014-12-18 14:59:16]
I: Checking remote connect back address.
I: Remote address found, connecting to 192.168.56.1:9089.
I: Connected to client. :-)
-> <init xmlns="urn:debugger_protocol_v1" xmlns:xdebug="http://xdebug.org/dbgp/xdebug" fileuri="file:///var/www/public/index.php" language="PHP" protocol_version="1.0" appid="9660" idekey="PHPSTORM"><engine version=""><![CDATA[xdebug]]></engine><author><![CDATA[HHVM]]></author><url><![CDATA[http://hhvm.com/]]></url><copyright><![CDATA[Copyright (c) 2002-2013 by Derick Rethans]]></copyright></init>
<- feature_set -i 1 -n show_hidden -v 1
-> <response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="http://xdebug.org/dbgp/xdebug" command="feature_set" transaction_id="1" feature="show_hidden" success="1"></response>
<- feature_set -i 2 -n max_depth -v 1
-> <response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="http://xdebug.org/dbgp/xdebug" command="feature_set" transaction_id="2" feature="max_depth" success="1"></response>
<- feature_set -i 3 -n max_children -v 100
-> <response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="http://xdebug.org/dbgp/xdebug" command="feature_set" transaction_id="3" feature="max_children" success="1"></response>
<- status -i 4
-> <response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="http://xdebug.org/dbgp/xdebug" command="status" transaction_id="4" status="starting" reason="ok"></response>
<- step_into -i 5
-> <response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="http://xdebug.org/dbgp/xdebug" status="break" reason="ok" command="step_into" transaction_id="5"><xdebug:message lineno="12" filename="file:///var/www/public/index.php"></xdebug:message></response>
<- breakpoint_set -i 6 -t line -f file:///var/www/public/index.php -n 32
-> <response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="http://xdebug.org/dbgp/xdebug" command="breakpoint_set" transaction_id="6" id="18" state="enabled"></response>
ただし、PhpStormの[リストをスキップするメソッドを追加]ボタンをクリックすると、非常に特殊なことが起こります。クリックするたびに変数をステップスルーするかのように、XDebugとの通信が続行されます。
<- stack_get -i 8
-> <response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="http://xdebug.org/dbgp/xdebug" command="stack_get" transaction_id="8"><stack where="{main}" level="0" type="file" filename="file:///var/www/public/index.php" lineno="12"></stack></response>
最終的に、これらの「stack_get」呼び出しのいくつかがこの方法でハックルに実行された後、期待されるコントロールが表示されます。
誰か提案はありますか?
この問題はgithubでクローズされました:https://github.com/facebook/hhvm/issues/4488
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加