I am having problems getting PhpStorm and an internal Xdebug in HHVM that plays nicely on a wandering field, below is my 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 listens on port 9000, if I delete all the remote servers on first start, PhpStorm gives me the usual "incoming connection from Xdebug".
After I select the correct mapping and hit the first breakpoint, the HHVM appears to insert before returning the 504 Gateway Time-out. If I remove the breakpoint, then the load will be instantaneous, so it is clear that PhpStorm and Xdebug are interacting, but the stack / breakpoint information controls are never displayed in the debug window.
Does anyone have directions, my thoughts are: 1) I need to open the port on the Vargrant box, because the connection hangs somewhere 2) Error in HHVM / PhpStorm (unlikely)
I'm on Ubuntu 14.04, Vagrant 1.6.5
VM also 14.04 with Nginx + HipHop VM 3.4.1, extension API: 20140829
PhpStorm 8.0.2
Now I have enabled logging on the firewall for remote Xdebug connections, this is the result ....
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>
A very strange thing, though, if I click the Add Method to Skip List button in PhpStorm , it continues to communicate with XDebug, as if it were passing through variables, one with each click ...
<- 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>
Ultimately, the expected controls are displayed after several of these stack_get calls have been cracked this way.
Does anyone have any suggestions?