Skip to content

Commit

Permalink
Debugger: Add handling for signal debug messages.
Browse files Browse the repository at this point in the history
DebugEvents:
- Add definition for SignalReceivedEvent.

DebuggerInterface:
- Generate SignalReceivedEvent upon receipt of
  B_DEBUGGER_MESSAGE_SIGNAL_RECEIVED.
  • Loading branch information
anevilyak committed Jul 3, 2015
1 parent 86a5bc3 commit 601a9f1
Show file tree
Hide file tree
Showing 3 changed files with 35 additions and 1 deletion.
12 changes: 12 additions & 0 deletions src/apps/debugger/debugger_interface/DebugEvent.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -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)
{
}
14 changes: 14 additions & 0 deletions src/apps/debugger/debugger_interface/DebugEvent.h
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@
#include <debugger.h>

#include "ImageInfo.h"
#include "SignalInfo.h"
#include "SyscallInfo.h"
#include "Types.h"

Expand Down Expand Up @@ -223,4 +224,17 @@ class HandedOverEvent : public DebugEvent {
};


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
10 changes: 9 additions & 1 deletion src/apps/debugger/debugger_interface/DebuggerInterface.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand Down

0 comments on commit 601a9f1

Please sign in to comment.