diff --git a/src/apps/debugger/debugger_interface/DebugEvent.cpp b/src/apps/debugger/debugger_interface/DebugEvent.cpp index 16dac7328a..682de054a7 100644 --- a/src/apps/debugger/debugger_interface/DebugEvent.cpp +++ b/src/apps/debugger/debugger_interface/DebugEvent.cpp @@ -237,3 +237,15 @@ HandedOverEvent::HandedOverEvent(team_id team, thread_id thread, fCausingThread(causingThread) { } + + +// #pragma mark - SignalReceivedEvent + + +SignalReceivedEvent::SignalReceivedEvent(team_id team, thread_id thread, + const SignalInfo& info) + : + DebugEvent(B_DEBUGGER_MESSAGE_SIGNAL_RECEIVED, team, thread), + fInfo(info) +{ +} diff --git a/src/apps/debugger/debugger_interface/DebugEvent.h b/src/apps/debugger/debugger_interface/DebugEvent.h index edd81400df..c32b767742 100644 --- a/src/apps/debugger/debugger_interface/DebugEvent.h +++ b/src/apps/debugger/debugger_interface/DebugEvent.h @@ -9,6 +9,7 @@ #include #include "ImageInfo.h" +#include "SignalInfo.h" #include "SyscallInfo.h" #include "Types.h" @@ -223,4 +224,17 @@ private: }; +class SignalReceivedEvent : public DebugEvent { +public: + SignalReceivedEvent(team_id team, + thread_id thread, + const SignalInfo& info); + + const SignalInfo& GetSignalInfo() const { return fInfo; } + +private: + SignalInfo fInfo; +}; + + #endif // DEBUG_EVENT_H diff --git a/src/apps/debugger/debugger_interface/DebuggerInterface.cpp b/src/apps/debugger/debugger_interface/DebuggerInterface.cpp index 3c0ef9d18e..8e03267581 100644 --- a/src/apps/debugger/debugger_interface/DebuggerInterface.cpp +++ b/src/apps/debugger/debugger_interface/DebuggerInterface.cpp @@ -857,13 +857,21 @@ DebuggerInterface::_CreateDebugEvent(int32 messageCode, message.post_syscall.syscall, message.post_syscall.args)); break; } + case B_DEBUGGER_MESSAGE_SIGNAL_RECEIVED: + { + event = new(std::nothrow) SignalReceivedEvent(message.origin.team, + message.origin.thread, + SignalInfo(message.signal_received.signal, + message.signal_received.handler, + message.signal_received.deadly)); + break; + } default: printf("DebuggerInterface for team %" B_PRId32 ": unknown message " "from kernel: %" B_PRId32 "\n", fTeamID, messageCode); // fall through... case B_DEBUGGER_MESSAGE_TEAM_CREATED: case B_DEBUGGER_MESSAGE_PRE_SYSCALL: - case B_DEBUGGER_MESSAGE_SIGNAL_RECEIVED: case B_DEBUGGER_MESSAGE_PROFILER_UPDATE: case B_DEBUGGER_MESSAGE_HANDED_OVER: _ignore = true;