Added a few classes to the debug kit:
* BDebugMessageHandler: Interface with hooks for handling of debug messages. * BDebugContext: Essentially a C++ wrapper for struct debug_context, with handy methods for controlling a debugged team. * BTeamDebugger: Proxy for a debugged team. Derived from BDebugContext. * BDebugLooper: Wraps a main debug message loop. Any number of BTeamDebuggers can be added and associated with BDebugMessageHandlers. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@35953 a95241bf-73f2-0310-859d-f6bbb57e9c96
This commit is contained in:
@@ -0,0 +1,195 @@
|
||||
/*
|
||||
* Copyright 2010, Ingo Weinhold, [email protected].
|
||||
* Distributed under the terms of the MIT License.
|
||||
*/
|
||||
|
||||
|
||||
#include <DebugMessageHandler.h>
|
||||
|
||||
|
||||
BDebugMessageHandler::~BDebugMessageHandler()
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
/*! Handles the supplied debugger message.
|
||||
Can be overridded by subclasses. The base class implementation calls the
|
||||
respective Handle*() hook for the message.
|
||||
|
||||
\param messageCode The (port) message code identifying the debugger message.
|
||||
\param message The message data.
|
||||
\return \c true, if the caller is supposed to continue the thread, \c false
|
||||
otherwise.
|
||||
*/
|
||||
bool
|
||||
BDebugMessageHandler::HandleDebugMessage(int32 messageCode,
|
||||
const debug_debugger_message_data& message)
|
||||
{
|
||||
switch (messageCode) {
|
||||
case B_DEBUGGER_MESSAGE_THREAD_DEBUGGED:
|
||||
return HandleThreadDebugged(message.thread_debugged);
|
||||
case B_DEBUGGER_MESSAGE_DEBUGGER_CALL:
|
||||
return HandleDebuggerCall(message.debugger_call);
|
||||
case B_DEBUGGER_MESSAGE_BREAKPOINT_HIT:
|
||||
return HandleBreakpointHit(message.breakpoint_hit);
|
||||
case B_DEBUGGER_MESSAGE_WATCHPOINT_HIT:
|
||||
return HandleWatchpointHit(message.watchpoint_hit);
|
||||
case B_DEBUGGER_MESSAGE_SINGLE_STEP:
|
||||
return HandleSingleStep(message.single_step);
|
||||
case B_DEBUGGER_MESSAGE_PRE_SYSCALL:
|
||||
return HandlePreSyscall(message.pre_syscall);
|
||||
case B_DEBUGGER_MESSAGE_POST_SYSCALL:
|
||||
return HandlePostSyscall(message.post_syscall);
|
||||
case B_DEBUGGER_MESSAGE_SIGNAL_RECEIVED:
|
||||
return HandleSignalReceived(message.signal_received);
|
||||
case B_DEBUGGER_MESSAGE_EXCEPTION_OCCURRED:
|
||||
return HandleExceptionOccurred(message.exception_occurred);
|
||||
case B_DEBUGGER_MESSAGE_TEAM_CREATED:
|
||||
return HandleTeamCreated(message.team_created);
|
||||
case B_DEBUGGER_MESSAGE_TEAM_DELETED:
|
||||
return HandleTeamDeleted(message.team_deleted);
|
||||
case B_DEBUGGER_MESSAGE_TEAM_EXEC:
|
||||
return HandleTeamExec(message.team_exec);
|
||||
case B_DEBUGGER_MESSAGE_THREAD_CREATED:
|
||||
return HandleThreadCreated(message.thread_created);
|
||||
case B_DEBUGGER_MESSAGE_THREAD_DELETED:
|
||||
return HandleThreadDeleted(message.thread_deleted);
|
||||
case B_DEBUGGER_MESSAGE_IMAGE_CREATED:
|
||||
return HandleImageCreated(message.image_created);
|
||||
case B_DEBUGGER_MESSAGE_IMAGE_DELETED:
|
||||
return HandleImageDeleted(message.image_deleted);
|
||||
case B_DEBUGGER_MESSAGE_PROFILER_UPDATE:
|
||||
return HandleProfilerUpdate(message.profiler_update);
|
||||
case B_DEBUGGER_MESSAGE_HANDED_OVER:
|
||||
return HandleHandedOver(message.handed_over);
|
||||
default:
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
bool
|
||||
BDebugMessageHandler::HandleThreadDebugged(const debug_thread_debugged& message)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
bool
|
||||
BDebugMessageHandler::HandleDebuggerCall(const debug_debugger_call& message)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
bool
|
||||
BDebugMessageHandler::HandleBreakpointHit(const debug_breakpoint_hit& message)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
bool
|
||||
BDebugMessageHandler::HandleWatchpointHit(const debug_watchpoint_hit& message)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
bool
|
||||
BDebugMessageHandler::HandleSingleStep(const debug_single_step& message)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
bool
|
||||
BDebugMessageHandler::HandlePreSyscall(const debug_pre_syscall& message)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
bool
|
||||
BDebugMessageHandler::HandlePostSyscall(const debug_post_syscall& message)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
bool
|
||||
BDebugMessageHandler::HandleSignalReceived(const debug_signal_received& message)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
bool
|
||||
BDebugMessageHandler::HandleExceptionOccurred(
|
||||
const debug_exception_occurred& message)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
bool
|
||||
BDebugMessageHandler::HandleTeamCreated(const debug_team_created& message)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
bool
|
||||
BDebugMessageHandler::HandleTeamDeleted(const debug_team_deleted& message)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
bool
|
||||
BDebugMessageHandler::HandleTeamExec(const debug_team_exec& message)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
bool
|
||||
BDebugMessageHandler::HandleThreadCreated(const debug_thread_created& message)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
bool
|
||||
BDebugMessageHandler::HandleThreadDeleted(const debug_thread_deleted& message)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
bool
|
||||
BDebugMessageHandler::HandleImageCreated(const debug_image_created& message)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
bool
|
||||
BDebugMessageHandler::HandleImageDeleted(const debug_image_deleted& message)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
bool
|
||||
BDebugMessageHandler::HandleProfilerUpdate(const debug_profiler_update& message)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
bool
|
||||
BDebugMessageHandler::HandleHandedOver(const debug_handed_over& message)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
Reference in New Issue
Block a user