Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAlain Magloire2003-02-03 21:29:44 +0000
committerAlain Magloire2003-02-03 21:29:44 +0000
commitc89cc3f9e9a9b94d8c4617f8e6dd34b6ac536076 (patch)
treedafdbd6e206231fd64c64634c59c45cc4692d0bc
parentd83e7027dc49fb779fe9bab8bbc5278d497a9cb5 (diff)
downloadorg.eclipse.cdt-c89cc3f9e9a9b94d8c4617f8e6dd34b6ac536076.tar.gz
org.eclipse.cdt-c89cc3f9e9a9b94d8c4617f8e6dd34b6ac536076.tar.xz
org.eclipse.cdt-c89cc3f9e9a9b94d8c4617f8e6dd34b6ac536076.zip
catch MIInferiorSignalExitEvent.
-rw-r--r--debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/RxThread.java9
-rw-r--r--debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/cdi/EventManager.java3
-rw-r--r--debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/cdi/event/ExitedEvent.java23
3 files changed, 29 insertions, 6 deletions
diff --git a/debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/RxThread.java b/debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/RxThread.java
index 9f4c65194c4..6ee711447e1 100644
--- a/debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/RxThread.java
+++ b/debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/RxThread.java
@@ -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;
}
diff --git a/debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/cdi/EventManager.java b/debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/cdi/EventManager.java
index 839a9f3d682..a77409fd395 100644
--- a/debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/cdi/EventManager.java
+++ b/debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/cdi/EventManager.java
@@ -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) {
diff --git a/debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/cdi/event/ExitedEvent.java b/debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/cdi/event/ExitedEvent.java
index 1bc4e91c83f..5b8a50352ff 100644
--- a/debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/cdi/event/ExitedEvent.java
+++ b/debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/cdi/event/ExitedEvent.java
@@ -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;
}
/**

Back to the top