1
0
Fork 0
mirror of https://github.com/eclipse-cdt/cdt synced 2025-04-29 19:45:01 +02:00

SuspendedEvent always return a thread as the source

This commit is contained in:
Alain Magloire 2002-08-14 17:19:58 +00:00
parent 807a391399
commit ad50df009d

View file

@ -29,17 +29,18 @@ public class SuspendedEvent implements ICDISuspendedEvent {
} }
public ICDISessionObject getReason() { public ICDISessionObject getReason() {
if (event instanceof MIBreakpointEvent || event instanceof MIWatchpointEvent) { if (event instanceof MIBreakpointEvent
MIBreakpointEvent breakEvent = (MIBreakpointEvent)event; || event instanceof MIWatchpointEvent) {
MIBreakpointEvent breakEvent = (MIBreakpointEvent) event;
int number = breakEvent.getNumber(); int number = breakEvent.getNumber();
ICDIBreakpointManager mgr = session.getBreakpointManager(); ICDIBreakpointManager mgr = session.getBreakpointManager();
// Ask the breakpoint manager the array of ICDIBreakpoint(s) // Ask the breakpoint manager the array of ICDIBreakpoint(s)
// We need to return the same object as the reason. // We need to return the same object as the reason.
try { try {
ICDIBreakpoint[] bkpts= mgr.getBreakpoints(); ICDIBreakpoint[] bkpts = mgr.getBreakpoints();
for (int i = 0; i < bkpts.length; i++) { for (int i = 0; i < bkpts.length; i++) {
if (bkpts[i] instanceof Breakpoint) { if (bkpts[i] instanceof Breakpoint) {
Breakpoint point = (Breakpoint)bkpts[i]; Breakpoint point = (Breakpoint) bkpts[i];
MIBreakPoint miBreak = point.getMIBreakPoint(); MIBreakPoint miBreak = point.getMIBreakPoint();
if (miBreak.getNumber() == number) { if (miBreak.getNumber() == number) {
return point; return point;
@ -51,7 +52,7 @@ public class SuspendedEvent implements ICDISuspendedEvent {
} else if (event instanceof MISteppingRangeEvent) { } else if (event instanceof MISteppingRangeEvent) {
return new EndSteppingRange(session); return new EndSteppingRange(session);
} else if (event instanceof MISignalEvent) { } else if (event instanceof MISignalEvent) {
return new Signal(session, (MISignalEvent)event); return new Signal(session, (MISignalEvent) event);
} else if (event instanceof MILocationReachedEvent) { } else if (event instanceof MILocationReachedEvent) {
return new EndSteppingRange(session); return new EndSteppingRange(session);
} else if (event instanceof MIFunctionFinishedEvent) { } else if (event instanceof MIFunctionFinishedEvent) {
@ -67,38 +68,35 @@ public class SuspendedEvent implements ICDISuspendedEvent {
CTarget target = session.getCTarget(); CTarget target = session.getCTarget();
int threadId = 0; int threadId = 0;
if (event instanceof MIBreakpointEvent) { if (event instanceof MIBreakpointEvent) {
MIBreakpointEvent breakEvent = (MIBreakpointEvent)event; MIBreakpointEvent breakEvent = (MIBreakpointEvent) event;
threadId = breakEvent.getThreadId(); threadId = breakEvent.getThreadId();
} else if (event instanceof MIWatchpointEvent) { } else if (event instanceof MIWatchpointEvent) {
MIWatchpointEvent watchEvent = (MIWatchpointEvent)event; MIWatchpointEvent watchEvent = (MIWatchpointEvent) event;
threadId = watchEvent.getThreadId(); threadId = watchEvent.getThreadId();
} else if (event instanceof MISteppingRangeEvent) { } else if (event instanceof MISteppingRangeEvent) {
MISteppingRangeEvent rangeEvent = (MISteppingRangeEvent)event; MISteppingRangeEvent rangeEvent = (MISteppingRangeEvent) event;
threadId = rangeEvent.getThreadId(); threadId = rangeEvent.getThreadId();
} else if (event instanceof MISignalEvent) { } else if (event instanceof MISignalEvent) {
MISignalEvent sigEvent = (MISignalEvent)event; MISignalEvent sigEvent = (MISignalEvent) event;
threadId = sigEvent.getThreadId(); threadId = sigEvent.getThreadId();
} else if (event instanceof MILocationReachedEvent) { } else if (event instanceof MILocationReachedEvent) {
MILocationReachedEvent locEvent = (MILocationReachedEvent)event; MILocationReachedEvent locEvent = (MILocationReachedEvent) event;
threadId = locEvent.getThreadId(); threadId = locEvent.getThreadId();
} else if (event instanceof MIFunctionFinishedEvent) { } else if (event instanceof MIFunctionFinishedEvent) {
MIFunctionFinishedEvent funcEvent = (MIFunctionFinishedEvent)event; MIFunctionFinishedEvent funcEvent = (MIFunctionFinishedEvent) event;
threadId = funcEvent.getThreadId(); threadId = funcEvent.getThreadId();
} }
// If it came from a thread return it as the source. // If it came from a thread return it as the source.
if (threadId > 0) { CThread[] cthreads = target.getCThreads();
CThread[] cthreads = target.getCThreads(); for (int i = 0; i < cthreads.length; i++) {
for (int i = 0; i < cthreads.length; i++) { if (cthreads[i].getId() == threadId) {
if (cthreads[i].getId() == threadId) { return cthreads[i];
return cthreads[i];
}
} }
// Not found?? new thread created?
CThread cthread = new CThread(session.getCTarget(), threadId);
target.addCThread(cthread);
return cthread;
} }
return target; // Not found?? new thread created?
CThread cthread = new CThread(session.getCTarget(), threadId);
target.addCThread(cthread);
return cthread;
} }
} }