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:
parent
807a391399
commit
ad50df009d
1 changed files with 20 additions and 22 deletions
|
@ -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;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Reference in a new issue