Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Xdebug successfully connects to DBGP clients, but won't stop at breakpoints

I have Xdebug 2.1 installed, and running with PHP 5.2.13. It can successfully connect to multiple DBGP clients (i.e. the xdebug.remote_log shows communication back and forth, and the clients themselves also show the incoming connection), but it doesn't stop at breakpoints. I have tried NetBeans, MacGDBp and also the command-line debugclient bundled with Xdebug.

A typical exchange looks like:

Log opened at 2010-07-20 09:33:17
-> <init xmlns="urn:debugger_protocol_v1" xmlns:xdebug="http://xdebug.org/dbgp/xdebug" fileuri="file:///mnt/hgfs/htdocs/mycompany/index.php" language="PHP" protocol_version="1.0" appid="14371" idekey="macgdbp"><engine version="2.1.0"><![CDATA[Xdebug]]></engine><author><![CDATA[Derick Rethans]]></author><url><![CDATA[http://xdebug.org]]></url><copyright><![CDATA[Copyright (c) 2002-2010 by Derick Rethans]]></copyright></init>

<- status -i macgdbp
-> <response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="http://xdebug.org/dbgp/xdebug" command="status" transaction_id="macgdbp" status="starting" reason="ok"></response>

<- step_into -i macgdbp
-> <response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="http://xdebug.org/dbgp/xdebug" command="step_into" transaction_id="macgdbp" status="stopping" reason="ok"></response>

<- status -i macgdbp
-> <response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="http://xdebug.org/dbgp/xdebug" command="status" transaction_id="macgdbp" status="stopping" reason="ok"></response>

Log closed at 2010-07-20 09:33:18

NetBeans attempts to set breakpoints, and these are acknowledged by Xdebug:

<- breakpoint_set -i 7 -t line -s enabled -f file:///mnt/hgfs/htdocs/mycompany/index.php -n 9
-> <response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="http://xdebug.org/dbgp/xdebug" command="breakpoint_set" transaction_id="7" state="enabled" id="139360004"></response>

However, Xdebug still refuses to stop!

like image 957
mjs Avatar asked Jul 20 '10 10:07

mjs


People also ask

How do I debug Xdebug?

Press F5 to start the debugger. Click the new XDebug Helper extension and click the Debug option. Finally, refresh the page in the browser to let VSCode react and start the debugging process.


1 Answers

This appears to happen if you have have Xdebug loaded as an extension (i.e. extension=xdebug.so) in the PHP config instead of a zend_extension (i.e. zend_extension=/usr/lib/php5/20060613+lfs/xdebug.so).

Make sure that you don't have an extension=xdebug.so line anywhere in your PHP config, even if you're pretty sure you're using zend_extension. For example, if you have zend_extension in /etc/php5/conf.d/xdebug.ini, this may well be superseded by an extension in /etc/php5/apache2/php.ini. If this is the case, nothing will complain, and phpinfo() will dutifully report that Xdebug is loaded! (Xdebug 2.1 does issue a small warning in phpinfo() when loaded as an extension, but previous versions do nothing.)

like image 125
mjs Avatar answered Oct 06 '22 00:10

mjs