mirror of
https://github.com/eclipse-cdt/cdt
synced 2025-04-29 19:45:01 +02:00
catch MIInferiorSignalExitEvent.
This commit is contained in:
parent
d83e7027dc
commit
c89cc3f9e9
3 changed files with 29 additions and 6 deletions
|
@ -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.MIEvent;
|
||||||
import org.eclipse.cdt.debug.mi.core.event.MIFunctionFinishedEvent;
|
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.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.MILocationReachedEvent;
|
||||||
import org.eclipse.cdt.debug.mi.core.event.MIRunningEvent;
|
import org.eclipse.cdt.debug.mi.core.event.MIRunningEvent;
|
||||||
import org.eclipse.cdt.debug.mi.core.event.MISignalEvent;
|
import org.eclipse.cdt.debug.mi.core.event.MISignalEvent;
|
||||||
|
@ -374,7 +375,6 @@ public class RxThread extends Thread {
|
||||||
}
|
}
|
||||||
session.getMIInferior().setSuspended();
|
session.getMIInferior().setSuspended();
|
||||||
} else if ("exited-normally".equals(reason) ||
|
} else if ("exited-normally".equals(reason) ||
|
||||||
"exited-signalled".equals(reason) ||
|
|
||||||
"exited".equals(reason)) {
|
"exited".equals(reason)) {
|
||||||
if (exec != null) {
|
if (exec != null) {
|
||||||
event = new MIInferiorExitEvent(exec);
|
event = new MIInferiorExitEvent(exec);
|
||||||
|
@ -382,6 +382,13 @@ public class RxThread extends Thread {
|
||||||
event = new MIInferiorExitEvent(rr);
|
event = new MIInferiorExitEvent(rr);
|
||||||
}
|
}
|
||||||
session.getMIInferior().setTerminated();
|
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;
|
return event;
|
||||||
}
|
}
|
||||||
|
|
|
@ -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.MIEvent;
|
||||||
import org.eclipse.cdt.debug.mi.core.event.MIGDBExitEvent;
|
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.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.MIMemoryChangedEvent;
|
||||||
import org.eclipse.cdt.debug.mi.core.event.MIMemoryCreatedEvent;
|
import org.eclipse.cdt.debug.mi.core.event.MIMemoryCreatedEvent;
|
||||||
import org.eclipse.cdt.debug.mi.core.event.MIRegisterChangedEvent;
|
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) {
|
} else if (miEvent instanceof MIDestroyedEvent) {
|
||||||
if (miEvent instanceof MIThreadExitEvent) {
|
if (miEvent instanceof MIThreadExitEvent) {
|
||||||
cdiList.add(new DestroyedEvent(session,(MIThreadExitEvent)miEvent));
|
cdiList.add(new DestroyedEvent(session,(MIThreadExitEvent)miEvent));
|
||||||
|
} else if (miEvent instanceof MIInferiorSignalExitEvent) {
|
||||||
|
cdiList.add(new ExitedEvent(session, (MIInferiorSignalExitEvent)miEvent));
|
||||||
} else if (miEvent instanceof MIInferiorExitEvent) {
|
} else if (miEvent instanceof MIInferiorExitEvent) {
|
||||||
cdiList.add(new ExitedEvent(session, (MIInferiorExitEvent)miEvent));
|
cdiList.add(new ExitedEvent(session, (MIInferiorExitEvent)miEvent));
|
||||||
} else if (miEvent instanceof MIGDBExitEvent) {
|
} else if (miEvent instanceof MIGDBExitEvent) {
|
||||||
|
|
|
@ -5,18 +5,21 @@
|
||||||
*/
|
*/
|
||||||
package org.eclipse.cdt.debug.mi.core.cdi.event;
|
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.event.ICDIExitedEvent;
|
||||||
import org.eclipse.cdt.debug.core.cdi.model.ICDIObject;
|
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.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.MIInferiorExitEvent;
|
||||||
|
import org.eclipse.cdt.debug.mi.core.event.MIInferiorSignalExitEvent;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*/
|
*/
|
||||||
public class ExitedEvent implements ICDIExitedEvent {
|
public class ExitedEvent implements ICDIExitedEvent {
|
||||||
|
|
||||||
MIInferiorExitEvent event;
|
MIEvent event;
|
||||||
Session session;
|
Session session;
|
||||||
|
|
||||||
public ExitedEvent(Session s, MIInferiorExitEvent e) {
|
public ExitedEvent(Session s, MIInferiorExitEvent e) {
|
||||||
|
@ -24,11 +27,21 @@ public class ExitedEvent implements ICDIExitedEvent {
|
||||||
event = e;
|
event = e;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public ExitedEvent(Session s, MIInferiorSignalExitEvent e) {
|
||||||
|
session = s;
|
||||||
|
event = e;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @see org.eclipse.cdt.debug.core.cdi.event.ICDIExitedEvent#getExitInfo()
|
* @see org.eclipse.cdt.debug.core.cdi.event.ICDIExitedEvent#getExitInfo()
|
||||||
*/
|
*/
|
||||||
public ICDIExitInfo getExitInfo() {
|
public ICDISessionObject getReason() {
|
||||||
return new ExitInfo(session, event);
|
if (event instanceof MIInferiorExitEvent) {
|
||||||
|
return new ExitInfo(session, (MIInferiorExitEvent)event);
|
||||||
|
} else if (event instanceof MIInferiorSignalExitEvent) {
|
||||||
|
return new SignalExitInfo(session, (MIInferiorSignalExitEvent)event);
|
||||||
|
}
|
||||||
|
return session;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
Loading…
Add table
Reference in a new issue