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

catch MIInferiorSignalExitEvent.

This commit is contained in:
Alain Magloire 2003-02-03 21:29:44 +00:00
parent d83e7027dc
commit c89cc3f9e9
3 changed files with 29 additions and 6 deletions

View file

@ -23,6 +23,7 @@ import org.eclipse.cdt.debug.mi.core.event.MIErrorEvent;
import org.eclipse.cdt.debug.mi.core.event.MIEvent;
import org.eclipse.cdt.debug.mi.core.event.MIFunctionFinishedEvent;
import org.eclipse.cdt.debug.mi.core.event.MIInferiorExitEvent;
import org.eclipse.cdt.debug.mi.core.event.MIInferiorSignalExitEvent;
import org.eclipse.cdt.debug.mi.core.event.MILocationReachedEvent;
import org.eclipse.cdt.debug.mi.core.event.MIRunningEvent;
import org.eclipse.cdt.debug.mi.core.event.MISignalEvent;
@ -374,7 +375,6 @@ public class RxThread extends Thread {
}
session.getMIInferior().setSuspended();
} else if ("exited-normally".equals(reason) ||
"exited-signalled".equals(reason) ||
"exited".equals(reason)) {
if (exec != null) {
event = new MIInferiorExitEvent(exec);
@ -382,6 +382,13 @@ public class RxThread extends Thread {
event = new MIInferiorExitEvent(rr);
}
session.getMIInferior().setTerminated();
} else if ("exited-signalled".equals(reason)) {
if (exec != null) {
event = new MIInferiorSignalExitEvent(exec);
} else if (rr != null) {
event = new MIInferiorSignalExitEvent(rr);
}
session.getMIInferior().setTerminated();
}
return event;
}

View file

@ -44,6 +44,7 @@ import org.eclipse.cdt.debug.mi.core.event.MIDetachedEvent;
import org.eclipse.cdt.debug.mi.core.event.MIEvent;
import org.eclipse.cdt.debug.mi.core.event.MIGDBExitEvent;
import org.eclipse.cdt.debug.mi.core.event.MIInferiorExitEvent;
import org.eclipse.cdt.debug.mi.core.event.MIInferiorSignalExitEvent;
import org.eclipse.cdt.debug.mi.core.event.MIMemoryChangedEvent;
import org.eclipse.cdt.debug.mi.core.event.MIMemoryCreatedEvent;
import org.eclipse.cdt.debug.mi.core.event.MIRegisterChangedEvent;
@ -139,6 +140,8 @@ public class EventManager extends SessionObject implements ICDIEventManager, Obs
} else if (miEvent instanceof MIDestroyedEvent) {
if (miEvent instanceof MIThreadExitEvent) {
cdiList.add(new DestroyedEvent(session,(MIThreadExitEvent)miEvent));
} else if (miEvent instanceof MIInferiorSignalExitEvent) {
cdiList.add(new ExitedEvent(session, (MIInferiorSignalExitEvent)miEvent));
} else if (miEvent instanceof MIInferiorExitEvent) {
cdiList.add(new ExitedEvent(session, (MIInferiorExitEvent)miEvent));
} else if (miEvent instanceof MIGDBExitEvent) {

View file

@ -5,30 +5,43 @@
*/
package org.eclipse.cdt.debug.mi.core.cdi.event;
import org.eclipse.cdt.debug.core.cdi.ICDIExitInfo;
import org.eclipse.cdt.debug.core.cdi.ICDISessionObject;
import org.eclipse.cdt.debug.core.cdi.event.ICDIExitedEvent;
import org.eclipse.cdt.debug.core.cdi.model.ICDIObject;
import org.eclipse.cdt.debug.mi.core.cdi.Session;
import org.eclipse.cdt.debug.mi.core.cdi.ExitInfo;
import org.eclipse.cdt.debug.mi.core.cdi.Session;
import org.eclipse.cdt.debug.mi.core.cdi.SignalExitInfo;
import org.eclipse.cdt.debug.mi.core.event.MIEvent;
import org.eclipse.cdt.debug.mi.core.event.MIInferiorExitEvent;
import org.eclipse.cdt.debug.mi.core.event.MIInferiorSignalExitEvent;
/**
*/
public class ExitedEvent implements ICDIExitedEvent {
MIInferiorExitEvent event;
MIEvent event;
Session session;
public ExitedEvent(Session s, MIInferiorExitEvent e) {
session = s;
event = e;
}
public ExitedEvent(Session s, MIInferiorSignalExitEvent e) {
session = s;
event = e;
}
/**
* @see org.eclipse.cdt.debug.core.cdi.event.ICDIExitedEvent#getExitInfo()
*/
public ICDIExitInfo getExitInfo() {
return new ExitInfo(session, event);
public ICDISessionObject getReason() {
if (event instanceof MIInferiorExitEvent) {
return new ExitInfo(session, (MIInferiorExitEvent)event);
} else if (event instanceof MIInferiorSignalExitEvent) {
return new SignalExitInfo(session, (MIInferiorSignalExitEvent)event);
}
return session;
}
/**