SublimeTextXdebug
SublimeTextXdebug copied to clipboard
Incorrect xdebug response length checking
During breakpoint i've exception in Sublime Console and xdebug tabs (context, stack) stays empty.
Exception in thread Thread-11:
Traceback (most recent call last):
File "./threading.py", line 901, in _bootstrap_inner
File "C:\Users\pzaja_000\AppData\Roaming\Sublime Text 3\Packages\SublimeTextXdebug-master\xdebug\session.py", line 148, in run
self.execute(self.get_option('command'))
File "C:\Users\pzaja_000\AppData\Roaming\Sublime Text 3\Packages\SublimeTextXdebug-master\xdebug\session.py", line 242, in execute
context = self.get_context_values()
File "C:\Users\pzaja_000\AppData\Roaming\Sublime Text 3\Packages\SublimeTextXdebug-master\xdebug\session.py", line 279, in get_context_values
response = S.SESSION.read()
File "C:\Users\pzaja_000\AppData\Roaming\Sublime Text 3\Packages\SublimeTextXdebug-master\xdebug\protocol.py", line 179, in read
data = self.read_data()
File "C:\Users\pzaja_000\AppData\Roaming\Sublime Text 3\Packages\SublimeTextXdebug-master\xdebug\protocol.py", line 172, in read_data
raise ProtocolException("Length mismatch encountered while reading the Xdebug message")
SublimeTextXdebug-master.xdebug.protocol.ProtocolException: Length mismatch encountered while reading the Xdebug message
It's seems that plugin incorrectly checks response lenght. I've modified code in protocol.py:
debug('LEN1: %d' % int(length)) # added by me
debug('LEN2: %d' % len(message)) # added by me
if int(length) == len(message):
return message
else:
raise ProtocolException("Length mismatch encountered while reading the Xdebug message")
In xdebug.log i see:
[03/05/2015 11:09:02AM] DEBUG - LEN1: 63033 [03/05/2015 11:09:02AM] DEBUG - LEN2: 63025
...and plugin raises exception. I thinks that happens due to non-latin characters in xdebug response.
Thanks @pzajac2! After a whole day of searching "why Xdebug Context is empty", your finding is exactly the answer. So it happens I have an associative array that contains the word, α (alpha), which breaks the Xdebug Context.