diff --git a/src/apps/debugger/controllers/TeamDebugger.cpp b/src/apps/debugger/controllers/TeamDebugger.cpp index 9c334dca7d..25ab2314d0 100644 --- a/src/apps/debugger/controllers/TeamDebugger.cpp +++ b/src/apps/debugger/controllers/TeamDebugger.cpp @@ -582,10 +582,14 @@ TeamDebugger::MessageReceived(BMessage* message) if (message->FindBool("enabled", &enabled) != B_OK) enabled = true; + bool hidden; + if (message->FindBool("hidden", &hidden) != B_OK) + hidden = false; + if (breakpoint != NULL) _HandleSetUserBreakpoint(breakpoint, enabled); else - _HandleSetUserBreakpoint(address, enabled); + _HandleSetUserBreakpoint(address, enabled, hidden); } else { if (breakpoint != NULL) _HandleClearUserBreakpoint(breakpoint); @@ -840,11 +844,13 @@ TeamDebugger::ThreadActionRequested(thread_id threadID, void -TeamDebugger::SetBreakpointRequested(target_addr_t address, bool enabled) +TeamDebugger::SetBreakpointRequested(target_addr_t address, bool enabled, + bool hidden) { BMessage message(MSG_SET_BREAKPOINT); message.AddUInt64("address", (uint64)address); message.AddBool("enabled", enabled); + message.AddBool("hidden", hidden); PostMessage(&message); } @@ -1431,10 +1437,11 @@ TeamDebugger::_HandleImageFileChanged(image_id imageID) void -TeamDebugger::_HandleSetUserBreakpoint(target_addr_t address, bool enabled) +TeamDebugger::_HandleSetUserBreakpoint(target_addr_t address, bool enabled, + bool hidden) { TRACE_CONTROL("TeamDebugger::_HandleSetUserBreakpoint(%#" B_PRIx64 - ", %d)\n", address, enabled); + ", %d, %d)\n", address, enabled, hidden); // check whether there already is a breakpoint AutoLocker< ::Team> locker(fTeam); @@ -1506,6 +1513,8 @@ TeamDebugger::_HandleSetUserBreakpoint(target_addr_t address, bool enabled) return; userBreakpointReference.SetTo(userBreakpoint, true); + userBreakpoint->SetHidden(hidden); + TRACE_CONTROL(" created user breakpoint: %p\n", userBreakpoint); // iterate through all function instances and create @@ -1795,6 +1804,8 @@ TeamDebugger::_LoadSettings() return; BReference breakpointReference(breakpoint, true); + breakpoint->SetHidden(breakpointSetting->IsHidden()); + // install it fBreakpointManager->InstallUserBreakpoint(breakpoint, breakpointSetting->IsEnabled()); diff --git a/src/apps/debugger/controllers/TeamDebugger.h b/src/apps/debugger/controllers/TeamDebugger.h index 0c85698d69..f236f428a9 100644 --- a/src/apps/debugger/controllers/TeamDebugger.h +++ b/src/apps/debugger/controllers/TeamDebugger.h @@ -70,7 +70,7 @@ private: virtual void ThreadActionRequested(thread_id threadID, uint32 action, target_addr_t address); virtual void SetBreakpointRequested(target_addr_t address, - bool enabled); + bool enabled, bool hidden = false); virtual void SetBreakpointEnabledRequested( UserBreakpoint* breakpoint, bool enabled); @@ -145,7 +145,7 @@ private: void _HandleImageFileChanged(image_id imageID); void _HandleSetUserBreakpoint(target_addr_t address, - bool enabled); + bool enabled, bool hidden); void _HandleSetUserBreakpoint( UserBreakpoint* breakpoint, bool enabled); void _HandleClearUserBreakpoint( diff --git a/src/apps/debugger/user_interface/UserInterface.h b/src/apps/debugger/user_interface/UserInterface.h index c115fed609..fa95fe823c 100644 --- a/src/apps/debugger/user_interface/UserInterface.h +++ b/src/apps/debugger/user_interface/UserInterface.h @@ -95,7 +95,7 @@ public: target_addr_t address = 0) = 0; virtual void SetBreakpointRequested(target_addr_t address, - bool enabled) = 0; + bool enabled, bool hidden = false) = 0; virtual void SetBreakpointEnabledRequested( UserBreakpoint* breakpoint, bool enabled) = 0;