Reputation: 473
I've successfully installed Sublime Text and xdebug on my 64bit Win7 machine and installed The easiest Xdebug plugin in Firefox. Sublime Text is running as Administrator, its project file sets the correct path and xdebug settings, and I have breakpoints only on lines with valid PHP code. WampServer is running correctly on http://localhost:8080/
.
The xdebug package commands appear to work as designed, but the debugger never stops at my breakpoints. Starting or stopping the debugger within Sublime Text opens the correct HTML page in Firefox, although the page load is significantly slower than usual.
I've set up the xdebug log. Here's a sample.
Log opened at 2013-06-23 21:42:02
I: Connecting to configured address/port: localhost:9000.
I: Connected to client. :-)
-> <init xmlns="urn:debugger_protocol_v1" xmlns:xdebug="http://xdebug.org/dbgp/xdebug" fileuri="file:///C:/wamp/bin/php/firelogger/firelogger.php" language="PHP" protocol_version="1.0" appid="3948" idekey="sublime.xdebug"><engine version="2.2.3"><![CDATA[Xdebug]]></engine><author><![CDATA[Derick Rethans]]></author><url><![CDATA[http://xdebug.org]]></url><copyright><![CDATA[Copyright (c) 2002-2013 by Derick Rethans]]></copyright></init>
<- breakpoint_set -i 1 -n 10 -t line -f file://C:\Users\work\My Projects\ElseApps\EAFF\code\webroot\index.php
-> <response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="http://xdebug.org/dbgp/xdebug" command="breakpoint_set" transaction_id="1"><error code="1"><message><![CDATA[parse error in command]]></message></error></response>
<- breakpoint_set -i 2 -n 17 -t line -f file://C:\Users\work\My Projects\ElseApps\EAFF\code\approot\core\etc\eaff-index.php
-> <response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="http://xdebug.org/dbgp/xdebug" command="breakpoint_set" transaction_id="2"><error code="1"><message><![CDATA[parse error in command]]></message></error></response>
<- breakpoint_set -i 3 -n 18 -t line -f file://C:\Users\work\My Projects\ElseApps\EAFF\code\approot\core\etc\eaff-index.php
-> <response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="http://xdebug.org/dbgp/xdebug" command="breakpoint_set" transaction_id="3"><error code="1"><message><![CDATA[parse error in command]]></message></error></response>
<- run -i 4
-> <response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="http://xdebug.org/dbgp/xdebug" command="run" transaction_id="4" status="stopping" reason="ok"></response>
Log closed at 2013-06-23 21:42:04
For completeness, here's the xdebug section of my php.ini file ...
[xdebug]
zend_extension = c:\wamp\bin\php\php5.3.13\ext\php_xdebug-2.2.3-5.3-vc9-x86_64.dll
;xdebug.remote_enable = off
;xdebug.profiler_enable = off
;xdebug.profiler_enable_trigger = off
;xdebug.profiler_output_name = cachegrind.out.%t.%p
;xdebug.profiler_output_dir = "c:/wamp/tmp"
xdebug.remote_enable=1
xdebug.remote_host="localhost"
xdebug.remote_port=9000
xdebug.remote_handler="dbgp"
xdebug.remote_log=C:\wamp\bin\apache\apache2.2.22\logs\xdebug.log
xdebug.remote_mode=req
xdebug.profiler_enable=1
xdebug.profiler_output_dir="c:/wamp/tmp/"
xdebug.collect_params=On
xdebug.show_local_vars=On
... and the Sublime Text project file.
{
"folders":
[
{
"path": "/C/Users/work/My Projects/ElseApps/EAFF/code"
}
],
"settings": {
"xdebug": { "url": "http://localhost:8080" }
}
Sublime Text's status bar shows the following message after I click Start debugging and the page slowly loads:
Xdebug: Page finished executing. Reload to continue debugging.
Can anyone spot where I'm going wrong, or advise a useful path to diagnosing the problem?
Upvotes: 3
Views: 3674
Reputation: 36774
This is a bug in Sublime's implementation of the debugging protocol.
The command being sent:
<- breakpoint_set -i 3 -n 18 -t line -f file://C:\Users\work\My Projects\ElseApps\EAFF\code\approot\core\etc\eaff-index.php
includes spaces in the file name (the value for -f).
It should just use quotes around the path: https://github.com/derickr/xdebug/blob/master/xdebug_handler_dbgp.c#L2289 and https://github.com/derickr/xdebug/blob/master/xdebug_handler_dbgp.c#L2314 …
Upvotes: 0
Reputation: 473
The cause does appear to be the space in the path passed to Xdebug by Sublime Text's Xdebug package. The original query ...
<- breakpoint_set -i 3 -n 18 -t line -f file://C:\Users\work\My Projects\ElseApps\EAFF\code\approot\core\etc\eaff-index.php
... results in an error response ...
-> <response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="http://xdebug.org/dbgp/xdebug" command="breakpoint_set" transaction_id="3"><error code="1"><message><![CDATA[parse error in command]]></message></error></response>
... but a quick and nasty hack of the Python source file (my first ever Python edit) sends this ...
<- breakpoint_set -i 1 -n 18 -t line -f file://C:\Users\work\MyProj~1\ElseApps\EAFF\code\approot\core\etc\eaff-index.php
... and gets this back ...
-> <response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="http://xdebug.org/dbgp/xdebug" command="breakpoint_set" transaction_id="1" id="39480001"></response>
... after which everything works as designed.
The short-term hack used to test this is at line 221 in Xdebug.py:
def uri(self):
rawpath = os.path.realpath(self.view.file_name())
outpath = rawpath.replace("My Projects", "MyProj~1")
# return 'file://' + os.path.realpath(self.view.file_name())
return 'file://' + outpath
I'll investigate further. I'd already deliberately set the 8.3 pathname in the Sublime Text project file, but that's not what's passed to Xdebug. If it were, there should be no problem.
Upvotes: 2