From 64d5a0a4b70cce1f9dcd65034adf7f8fab478a8a Mon Sep 17 00:00:00 2001 From: Ingo Weinhold Date: Fri, 26 Mar 2010 21:18:08 +0000 Subject: [PATCH] Added UnhandledDebugMessage() hook which is called by the base class implementations of the other hooks. This way one can easily detect/handle otherwise unhandled events. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@35964 a95241bf-73f2-0310-859d-f6bbb57e9c96 --- headers/private/debug/DebugMessageHandler.h | 3 + src/kits/debug/DebugMessageHandler.cpp | 63 +++++++++++++++------ 2 files changed, 49 insertions(+), 17 deletions(-) diff --git a/headers/private/debug/DebugMessageHandler.h b/headers/private/debug/DebugMessageHandler.h index 9d59d30f97..e2ca0ea259 100644 --- a/headers/private/debug/DebugMessageHandler.h +++ b/headers/private/debug/DebugMessageHandler.h @@ -52,6 +52,9 @@ public: const debug_profiler_update& message); virtual bool HandleHandedOver( const debug_handed_over& message); + + virtual bool UnhandledDebugMessage(int32 messageCode, + const debug_debugger_message_data& message); }; diff --git a/src/kits/debug/DebugMessageHandler.cpp b/src/kits/debug/DebugMessageHandler.cpp index 046067d928..a2a0aece00 100644 --- a/src/kits/debug/DebugMessageHandler.cpp +++ b/src/kits/debug/DebugMessageHandler.cpp @@ -71,56 +71,64 @@ BDebugMessageHandler::HandleDebugMessage(int32 messageCode, bool BDebugMessageHandler::HandleThreadDebugged(const debug_thread_debugged& message) { - return true; + return UnhandledDebugMessage(B_DEBUGGER_MESSAGE_THREAD_DEBUGGED, + (const debug_debugger_message_data&)message); } bool BDebugMessageHandler::HandleDebuggerCall(const debug_debugger_call& message) { - return true; + return UnhandledDebugMessage(B_DEBUGGER_MESSAGE_DEBUGGER_CALL, + (const debug_debugger_message_data&)message); } bool BDebugMessageHandler::HandleBreakpointHit(const debug_breakpoint_hit& message) { - return true; + return UnhandledDebugMessage(B_DEBUGGER_MESSAGE_BREAKPOINT_HIT, + (const debug_debugger_message_data&)message); } bool BDebugMessageHandler::HandleWatchpointHit(const debug_watchpoint_hit& message) { - return true; + return UnhandledDebugMessage(B_DEBUGGER_MESSAGE_WATCHPOINT_HIT, + (const debug_debugger_message_data&)message); } bool BDebugMessageHandler::HandleSingleStep(const debug_single_step& message) { - return true; + return UnhandledDebugMessage(B_DEBUGGER_MESSAGE_SINGLE_STEP, + (const debug_debugger_message_data&)message); } bool BDebugMessageHandler::HandlePreSyscall(const debug_pre_syscall& message) { - return true; + return UnhandledDebugMessage(B_DEBUGGER_MESSAGE_PRE_SYSCALL, + (const debug_debugger_message_data&)message); } bool BDebugMessageHandler::HandlePostSyscall(const debug_post_syscall& message) { - return true; + return UnhandledDebugMessage(B_DEBUGGER_MESSAGE_POST_SYSCALL, + (const debug_debugger_message_data&)message); } bool BDebugMessageHandler::HandleSignalReceived(const debug_signal_received& message) { - return true; + return UnhandledDebugMessage(B_DEBUGGER_MESSAGE_SIGNAL_RECEIVED, + (const debug_debugger_message_data&)message); } @@ -128,68 +136,89 @@ bool BDebugMessageHandler::HandleExceptionOccurred( const debug_exception_occurred& message) { - return true; + return UnhandledDebugMessage(B_DEBUGGER_MESSAGE_EXCEPTION_OCCURRED, + (const debug_debugger_message_data&)message); } bool BDebugMessageHandler::HandleTeamCreated(const debug_team_created& message) { - return true; + return UnhandledDebugMessage(B_DEBUGGER_MESSAGE_TEAM_CREATED, + (const debug_debugger_message_data&)message); } bool BDebugMessageHandler::HandleTeamDeleted(const debug_team_deleted& message) { - return true; + return UnhandledDebugMessage(B_DEBUGGER_MESSAGE_TEAM_DELETED, + (const debug_debugger_message_data&)message); } bool BDebugMessageHandler::HandleTeamExec(const debug_team_exec& message) { - return true; + return UnhandledDebugMessage(B_DEBUGGER_MESSAGE_TEAM_EXEC, + (const debug_debugger_message_data&)message); } bool BDebugMessageHandler::HandleThreadCreated(const debug_thread_created& message) { - return true; + return UnhandledDebugMessage(B_DEBUGGER_MESSAGE_THREAD_CREATED, + (const debug_debugger_message_data&)message); } bool BDebugMessageHandler::HandleThreadDeleted(const debug_thread_deleted& message) { - return true; + return UnhandledDebugMessage(B_DEBUGGER_MESSAGE_THREAD_DELETED, + (const debug_debugger_message_data&)message); } bool BDebugMessageHandler::HandleImageCreated(const debug_image_created& message) { - return true; + return UnhandledDebugMessage(B_DEBUGGER_MESSAGE_IMAGE_CREATED, + (const debug_debugger_message_data&)message); } bool BDebugMessageHandler::HandleImageDeleted(const debug_image_deleted& message) { - return true; + return UnhandledDebugMessage(B_DEBUGGER_MESSAGE_IMAGE_DELETED, + (const debug_debugger_message_data&)message); } bool BDebugMessageHandler::HandleProfilerUpdate(const debug_profiler_update& message) { - return true; + return UnhandledDebugMessage(B_DEBUGGER_MESSAGE_PROFILER_UPDATE, + (const debug_debugger_message_data&)message); } bool BDebugMessageHandler::HandleHandedOver(const debug_handed_over& message) +{ + return UnhandledDebugMessage(B_DEBUGGER_MESSAGE_HANDED_OVER, + (const debug_debugger_message_data&)message); +} + + +/*! Called by the base class versions of the specific Handle*() methods. + Can be overridded to handle any message not handled otherwise. +*/ +bool +BDebugMessageHandler::UnhandledDebugMessage(int32 messageCode, + const debug_debugger_message_data& message) { return true; }