regarding the problem, Run-to-cursor ( F4 ) does set a "tbreak" but doesn't continue debugging:
the problem is, that
DebuggerDriver::RunQueue() (in plugins\debuggergdb\debuggerdriver.cpp)
sets
m_ProgramIsStopped = false; regardless of the command and/or the actual state but in
DebuggerGDB::RunToCursor() (in plugins\debuggergdb\debuggergdb.cpp)
you call afterwards
Continue();which runs
DebuggerGDB::RunCommand(int cmd) which tests the same flag by calling
!IsStopped() in order to proceed or just leave the function without action.
in order to test the above said i did the following patch,
which doesn'tn set
m_ProgramIsStopped = false;in case of the current command is a temporary breakpoint request.
Index: D:/devel/CodeBlocks/trunk/src/plugins/debuggergdb/debuggerdriver.cpp
===================================================================
--- D:/devel/CodeBlocks/trunk/src/plugins/debuggergdb/debuggerdriver.cpp (revision 1986)
+++ D:/devel/CodeBlocks/trunk/src/plugins/debuggergdb/debuggerdriver.cpp (working copy)
@@ -96,7 +96,8 @@
{
m_QueueBusy = true;
m_pDBG->SendCommand(CurrentCommand()->m_Cmd);
- m_ProgramIsStopped = false;
+ if (!CurrentCommand()->m_Cmd.StartsWith(_T("tbreak ")))
+ m_ProgramIsStopped = false;
}
// Call Action()
with this patch F4 works ok, but it is certainly not the right patch for solving this problem generally,
that is beyond my scope ... only want to share my results of investigation