SublimeDebugger icon indicating copy to clipboard operation
SublimeDebugger copied to clipboard

gdb: variables ui breaks after expanding locals

Open Arcturuss opened this issue 1 year ago • 2 comments

When expanding some structs while debugging C++ with GDB, the debugger UI on bottom panel disappears and never reappears again. Only debugger console is shown on the panel then. Closing and reopening debugger doesn't work.

Windows 10, latest versions of ST4 and Debugger from package control.

There is error in the 'show protocol' window:

Traceback (most recent call last):
  File "C:\Users\user\AppData\Roaming\Sublime Text\Packages\Debugger\modules\core\asyncio.py", line 94, in __call__
    self.callback(*self.args)
  File "C:\Users\user\AppData\Roaming\Sublime Text\Packages\Debugger\modules\ui\layout.py", line 73, in render_layouts
    r.render()
  File "C:\Users\user\AppData\Roaming\Sublime Text\Packages\Debugger\modules\ui\phantom.py", line 22, in render
    updated = super().render()
  File "C:\Users\user\AppData\Roaming\Sublime Text\Packages\Debugger\modules\ui\layout.py", line 204, in render
    self.render_element_tree(self.item)
  File "C:\Users\user\AppData\Roaming\Sublime Text\Packages\Debugger\modules\ui\layout.py", line 183, in render_element_tree
    self.render_element_tree(child)
  File "C:\Users\user\AppData\Roaming\Sublime Text\Packages\Debugger\modules\ui\layout.py", line 183, in render_element_tree
    self.render_element_tree(child)
  File "C:\Users\user\AppData\Roaming\Sublime Text\Packages\Debugger\modules\ui\layout.py", line 183, in render_element_tree
    self.render_element_tree(child)
  [Previous line repeated 5 more times]
  File "C:\Users\user\AppData\Roaming\Sublime Text\Packages\Debugger\modules\ui\layout.py", line 195, in render_element_tree
    self.render_element_tree(child, True)
  File "C:\Users\user\AppData\Roaming\Sublime Text\Packages\Debugger\modules\ui\layout.py", line 195, in render_element_tree
    self.render_element_tree(child, True)
  File "C:\Users\user\AppData\Roaming\Sublime Text\Packages\Debugger\modules\ui\layout.py", line 190, in render_element_tree
    item.perform_render()
  File "C:\Users\user\AppData\Roaming\Sublime Text\Packages\Debugger\modules\ui\html.py", line 100, in perform_render
    self.render()
  File "C:\Users\user\AppData\Roaming\Sublime Text\Packages\Debugger\modules\views\variable.py", line 246, in render
    self.render_header(name, value, is_expandable, is_expanded)
  File "C:\Users\user\AppData\Roaming\Sublime Text\Packages\Debugger\modules\views\variable.py", line 200, in render_header
    ui.code(value, on_click=self.edit_variable)
  File "C:\Users\user\AppData\Roaming\Sublime Text\Packages\Debugger\modules\ui\html.py", line 43, in __call__
    instance = super().__call__(*args, **kwargs)
  File "C:\Users\user\AppData\Roaming\Sublime Text\Packages\Debugger\modules\ui\html.py", line 291, in __init__
    self.text = text.replace('\n', '\\n')
AttributeError: 'list' object has no attribute 'replace'

Arcturuss avatar Jan 13 '25 12:01 Arcturuss

Just based on the stack trace it looks like they are sending an array for a variables value which isn't allowed it should be a string.

daveleroy avatar Jan 13 '25 20:01 daveleroy

Yeah this looks like an issue with the adapter that they will need to fix.

Here is the relevant bug report https://github.com/WebFreak001/code-debug/issues/413 And a fix https://github.com/WebFreak001/code-debug/pull/414

daveleroy avatar Jan 13 '25 20:01 daveleroy