1/* 2 * Copyright 2009, Ingo Weinhold, ingo_weinhold@gmx.de. 3 * Distributed under the terms of the MIT License. 4 */ 5 6#include "DebugEvent.h" 7 8#include "CpuState.h" 9 10 11// #pragma mark - DebugEvent 12 13 14DebugEvent::DebugEvent(int32 eventType, team_id team, 15 thread_id thread) 16 : 17 fEventType(eventType), 18 fTeam(team), 19 fThread(thread), 20 fThreadStopped(false) 21{ 22} 23 24 25DebugEvent::~DebugEvent() 26{ 27} 28 29 30void 31DebugEvent::SetThreadStopped(bool stopped) 32{ 33 fThreadStopped = stopped; 34} 35 36 37// #pragma mark - CpuStateEvent 38 39 40CpuStateEvent::CpuStateEvent(debug_debugger_message eventType, team_id team, 41 thread_id thread, CpuState* state) 42 : 43 DebugEvent(eventType, team, thread), 44 fCpuState(state) 45{ 46 if (fCpuState != NULL) 47 fCpuState->AcquireReference(); 48} 49 50 51CpuStateEvent::~CpuStateEvent() 52{ 53 if (fCpuState != NULL) 54 fCpuState->ReleaseReference(); 55} 56 57 58// #pragma mark - ThreadDebuggedEvent 59 60 61ThreadDebuggedEvent::ThreadDebuggedEvent(team_id team, thread_id thread) 62 : 63 DebugEvent(B_DEBUGGER_MESSAGE_THREAD_DEBUGGED, team, thread) 64{ 65} 66 67 68// #pragma mark - DebuggerCallEvent 69 70 71DebuggerCallEvent::DebuggerCallEvent(team_id team, thread_id thread, 72 target_addr_t message) 73 : 74 DebugEvent(B_DEBUGGER_MESSAGE_DEBUGGER_CALL, team, thread), 75 fMessage(message) 76{ 77} 78 79 80// #pragma mark - BreakpointHitEvent 81 82 83BreakpointHitEvent::BreakpointHitEvent(team_id team, thread_id thread, 84 CpuState* state) 85 : 86 CpuStateEvent(B_DEBUGGER_MESSAGE_BREAKPOINT_HIT, team, thread, state) 87{ 88} 89 90 91// #pragma mark - WatchpointHitEvent 92 93 94WatchpointHitEvent::WatchpointHitEvent(team_id team, thread_id thread, 95 CpuState* state) 96 : 97 CpuStateEvent(B_DEBUGGER_MESSAGE_WATCHPOINT_HIT, team, thread, state) 98{ 99} 100 101 102 103// #pragma mark - SingleStepEvent 104 105 106SingleStepEvent::SingleStepEvent(team_id team, thread_id thread, 107 CpuState* state) 108 : 109 CpuStateEvent(B_DEBUGGER_MESSAGE_SINGLE_STEP, team, thread, state) 110{ 111} 112 113 114// #pragma mark - ExceptionOccurredEvent 115 116 117ExceptionOccurredEvent::ExceptionOccurredEvent(team_id team, thread_id thread, 118 debug_exception_type exception) 119 : 120 DebugEvent(B_DEBUGGER_MESSAGE_EXCEPTION_OCCURRED, team, thread), 121 fException(exception) 122{ 123} 124 125 126// #pragma mark - TeamDeletedEvent 127 128 129TeamDeletedEvent::TeamDeletedEvent(team_id team, thread_id thread) 130 : 131 DebugEvent(B_DEBUGGER_MESSAGE_TEAM_DELETED, team, thread) 132{ 133} 134 135 136// #pragma mark - TeamExecEvent 137 138 139TeamExecEvent::TeamExecEvent(team_id team, thread_id thread) 140 : 141 DebugEvent(B_DEBUGGER_MESSAGE_TEAM_EXEC, team, thread) 142{ 143} 144 145 146// #pragma mark - ThreadCreatedEvent 147 148 149ThreadCreatedEvent::ThreadCreatedEvent(team_id team, thread_id thread, 150 thread_id newThread) 151 : 152 DebugEvent(B_DEBUGGER_MESSAGE_THREAD_CREATED, team, thread), 153 fNewThread(newThread) 154{ 155} 156 157 158// #pragma mark - ThreadRenamedEvent 159 160 161ThreadRenamedEvent::ThreadRenamedEvent(team_id team, thread_id thread, 162 thread_id renamedThread, const char* newName) 163 : 164 DebugEvent(DEBUGGER_MESSAGE_THREAD_RENAMED, team, thread), 165 fRenamedThread(renamedThread) 166{ 167 strlcpy(fName, newName, sizeof(fName)); 168} 169 170 171// #pragma mark - ThreadPriorityChangedEvent 172 173 174ThreadPriorityChangedEvent::ThreadPriorityChangedEvent(team_id team, 175 thread_id thread, thread_id changedThread, int32 newPriority) 176 : 177 DebugEvent(DEBUGGER_MESSAGE_THREAD_PRIORITY_CHANGED, team, thread), 178 fChangedThread(changedThread), 179 fNewPriority(newPriority) 180{ 181} 182 183 184// #pragma mark - ThreadDeletedEvent 185 186 187ThreadDeletedEvent::ThreadDeletedEvent(team_id team, thread_id thread) 188 : 189 DebugEvent(B_DEBUGGER_MESSAGE_THREAD_DELETED, team, thread) 190{ 191} 192 193 194// #pragma mark - ImageCreatedEvent 195 196 197ImageCreatedEvent::ImageCreatedEvent(team_id team, thread_id thread, 198 const ImageInfo& info) 199 : 200 DebugEvent(B_DEBUGGER_MESSAGE_IMAGE_CREATED, team, thread), 201 fInfo(info) 202{ 203} 204 205 206// #pragma mark - ImageDeletedEvent 207 208 209ImageDeletedEvent::ImageDeletedEvent(team_id team, thread_id thread, 210 const ImageInfo& info) 211 : 212 DebugEvent(B_DEBUGGER_MESSAGE_IMAGE_DELETED, team, thread), 213 fInfo(info) 214{ 215} 216 217 218// #pragma mark - PostSyscallEvent 219 220 221PostSyscallEvent::PostSyscallEvent(team_id team, thread_id thread, 222 const SyscallInfo& info) 223 : 224 DebugEvent(B_DEBUGGER_MESSAGE_POST_SYSCALL, team, thread), 225 fInfo(info) 226{ 227} 228 229 230// #pragma mark - HandedOverEvent 231 232 233HandedOverEvent::HandedOverEvent(team_id team, thread_id thread, 234 thread_id causingThread) 235 : 236 DebugEvent(B_DEBUGGER_MESSAGE_HANDED_OVER, team, thread), 237 fCausingThread(causingThread) 238{ 239} 240 241 242// #pragma mark - SignalReceivedEvent 243 244 245SignalReceivedEvent::SignalReceivedEvent(team_id team, thread_id thread, 246 const SignalInfo& info) 247 : 248 DebugEvent(B_DEBUGGER_MESSAGE_SIGNAL_RECEIVED, team, thread), 249 fInfo(info) 250{ 251} 252