- By the original design, the debugger allows thread context switching only interactively, while in the Call Stack pane (in Stopped mode). This is being handled directly through GtkTreeView::cursor-changed event. - However, this event was also getting triggered when clearing the latest thread's Call Stack after continuing the execution (Running mode). - This behavior does not seem to have being intended, and it lead to a number of issues: stepping hangs, corruption of GDB output processing, unnecessary attempts at opening of source files corresponding to thread's call-stack frames. - To avoid all of these issues, GtkTreeView::cursor-changed event is left unhandled while clearing the frames. Also the handler for thread-context switching is allowed processing only in debugger's Stopped mode to enforce the intended behavior.
Fixes #1069 You can view, comment on, or merge this pull request online at:
https://github.com/geany/geany-plugins/pull/1170
-- Commit Summary --
* Debugger: Fix debugging of multi-threaded programs
-- File Changes --
M debugger/src/debug.c (4) M debugger/src/stree.c (14)
-- Patch Links --
https://github.com/geany/geany-plugins/pull/1170.patch https://github.com/geany/geany-plugins/pull/1170.diff