bool BreakptMgr::SetBPEnabledState(const int bid, const bool enable) { IDebugger *dbgr = DebuggerMgr::Get().GetActiveDebugger(); if (dbgr && dbgr->IsRunning()) { // If the debugger is already running, tell it about the new 'enable' level // If not, it'll happen automatically when the debugger does start bool contIsNeeded = PauseDebuggerIfNeeded(); bool result = dbgr->SetEnabledState(bid, enable); if (contIsNeeded) { dbgr->Continue(); } return result; } return true; }
void BreakptMgr::SetAllBreakpointsEnabledState(bool enabled) { unsigned int successes = 0; bool debuggerIsRunning = false; bool contIsNeeded = false; IDebugger *dbgr = DebuggerMgr::Get().GetActiveDebugger(); if (dbgr && dbgr->IsRunning()) { debuggerIsRunning = true; contIsNeeded = PauseDebuggerIfNeeded(); } for (size_t i=0; i<m_bps.size(); ++i) { BreakpointInfo &bp = m_bps.at(i); if (((bp.debugger_id != -1) || !debuggerIsRunning) // Sanity check for when the debugger's running && (bp.is_enabled != enabled)) { // No point setting it to the current status if (debuggerIsRunning) { if (dbgr->SetEnabledState(bp.debugger_id, enabled)) { bp.is_enabled = enabled; ++successes; } } else { bp.is_enabled = enabled; ++successes; } } } if (debuggerIsRunning && contIsNeeded) { dbgr->Continue(); } if (successes) { RefreshBreakpointMarkers(); clMainFrame::Get()->GetDebuggerPane()->GetBreakpointView()->Initialize(); wxString msg = wxString::Format(wxT("%u "), successes); msg << (enabled ? _("breakpoints enabled") : _("breakpoints disabled")); clMainFrame::Get()->SetStatusMessage(msg, 0); } }