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

Watch for Breakpoint events.

This commit is contained in:
Alain Magloire 2003-01-08 15:41:58 +00:00
parent 4fd2644dc0
commit 41e92b5b2d
4 changed files with 102 additions and 10 deletions

View file

@ -6,7 +6,9 @@ package org.eclipse.cdt.debug.mi.core.cdi;
import org.eclipse.cdt.debug.core.cdi.CDIException; import org.eclipse.cdt.debug.core.cdi.CDIException;
import org.eclipse.cdt.debug.core.cdi.event.ICDIChangedEvent; import org.eclipse.cdt.debug.core.cdi.event.ICDIChangedEvent;
import org.eclipse.cdt.debug.core.cdi.model.ICDIBreakpoint;
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.event.MIBreakPointChangedEvent;
import org.eclipse.cdt.debug.mi.core.event.MIRegisterChangedEvent; import org.eclipse.cdt.debug.mi.core.event.MIRegisterChangedEvent;
import org.eclipse.cdt.debug.mi.core.event.MIVarChangedEvent; import org.eclipse.cdt.debug.mi.core.event.MIVarChangedEvent;
@ -45,6 +47,18 @@ public class ChangedEvent implements ICDIChangedEvent {
} }
} }
public ChangedEvent(CSession s, MIBreakPointChangedEvent bpoint) {
session = s;
BreakpointManager mgr = (BreakpointManager)session.getBreakpointManager();
int number = bpoint.getNumber();
ICDIBreakpoint breakpoint = mgr.getBreakpoint(number);
if (breakpoint != null) {
source = breakpoint;
} else {
source = new CObject(session.getCTarget());
}
}
public ChangedEvent(CSession s, ICDIObject src) { public ChangedEvent(CSession s, ICDIObject src) {
session = s; session = s;
source = src; source = src;

View file

@ -0,0 +1,43 @@
/*
* (c) Copyright QNX Software Systems Ltd. 2002.
* All Rights Reserved.
*/
package org.eclipse.cdt.debug.mi.core.cdi;
import org.eclipse.cdt.debug.core.cdi.event.ICDICreatedEvent;
import org.eclipse.cdt.debug.core.cdi.model.ICDIBreakpoint;
import org.eclipse.cdt.debug.core.cdi.model.ICDIObject;
import org.eclipse.cdt.debug.mi.core.event.MIBreakPointCreatedEvent;
/**
*/
public class CreatedEvent implements ICDICreatedEvent {
CSession session;
ICDIObject source;
public CreatedEvent(CSession s, MIBreakPointCreatedEvent bpoint) {
session = s;
BreakpointManager mgr = (BreakpointManager)session.getBreakpointManager();
int number = bpoint.getNumber();
ICDIBreakpoint breakpoint = mgr.getBreakpoint(number);
if (breakpoint != null) {
source = breakpoint;
} else {
source = new CObject(session.getCTarget());
}
}
public CreatedEvent(CSession s, ICDIObject src) {
session = s;
source = src;
}
/**
* @see org.eclipse.cdt.debug.core.cdi.event.ICDIEvent#getSource()
*/
public ICDIObject getSource() {
return source;
}
}

View file

@ -7,6 +7,7 @@ package org.eclipse.cdt.debug.mi.core.cdi;
import org.eclipse.cdt.debug.core.cdi.event.ICDIDestroyedEvent; import org.eclipse.cdt.debug.core.cdi.event.ICDIDestroyedEvent;
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.event.MIBreakPointDeletedEvent;
import org.eclipse.cdt.debug.mi.core.event.MIThreadExitEvent; import org.eclipse.cdt.debug.mi.core.event.MIThreadExitEvent;
import org.eclipse.cdt.debug.mi.core.event.MIVarChangedEvent; import org.eclipse.cdt.debug.mi.core.event.MIVarChangedEvent;
@ -32,7 +33,18 @@ public class DestroyedEvent implements ICDIDestroyedEvent {
} else { } else {
source = new CObject(session.getCTarget()); source = new CObject(session.getCTarget());
} }
}
public DestroyedEvent(CSession s, MIBreakPointDeletedEvent bpoint) {
session = s;
BreakpointManager mgr = (BreakpointManager)session.getBreakpointManager();
int number = bpoint.getNumber();
Breakpoint breakpoint = mgr.deleteBreakpoint(number);
if (breakpoint != null) {
source = breakpoint;
} else {
source = new CObject(session.getCTarget());
}
} }
public DestroyedEvent(CSession s, ICDIObject src) { public DestroyedEvent(CSession s, ICDIObject src) {
@ -44,7 +56,6 @@ public class DestroyedEvent implements ICDIDestroyedEvent {
session = s; session = s;
} }
/** /**
* @see org.eclipse.cdt.debug.core.cdi.event.ICDIEvent#getSource() * @see org.eclipse.cdt.debug.core.cdi.event.ICDIEvent#getSource()
*/ */

View file

@ -15,7 +15,12 @@ import org.eclipse.cdt.debug.core.cdi.CDIException;
import org.eclipse.cdt.debug.core.cdi.ICDIEventManager; import org.eclipse.cdt.debug.core.cdi.ICDIEventManager;
import org.eclipse.cdt.debug.core.cdi.event.ICDIEvent; import org.eclipse.cdt.debug.core.cdi.event.ICDIEvent;
import org.eclipse.cdt.debug.core.cdi.event.ICDIEventListener; import org.eclipse.cdt.debug.core.cdi.event.ICDIEventListener;
import org.eclipse.cdt.debug.mi.core.event.MIBreakPointChangedEvent;
import org.eclipse.cdt.debug.mi.core.event.MIBreakPointCreatedEvent;
import org.eclipse.cdt.debug.mi.core.event.MIBreakPointDeletedEvent;
import org.eclipse.cdt.debug.mi.core.event.MIChangedEvent; import org.eclipse.cdt.debug.mi.core.event.MIChangedEvent;
import org.eclipse.cdt.debug.mi.core.event.MICreatedEvent;
import org.eclipse.cdt.debug.mi.core.event.MIDestroyedEvent;
import org.eclipse.cdt.debug.mi.core.event.MIDetachedEvent; 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;
@ -76,8 +81,20 @@ public class EventManager extends SessionObject implements ICDIEventManager, Obs
blocks[i].setDirty(false); blocks[i].setDirty(false);
} }
} }
} else if (miEvent instanceof MIBreakPointChangedEvent) {
MIBreakPointChangedEvent bpoint = (MIBreakPointChangedEvent)miEvent;
if (bpoint.getNumber() > 0) {
cdiList.add(new ChangedEvent(session, (MIBreakPointChangedEvent)miEvent));
} else {
// Try to update to figure out what have change.
try {
((BreakpointManager)(session.getBreakpointManager())).update();
} catch (CDIException e) {
} }
} else if (miEvent instanceof MIThreadExitEvent) { }
}
} else if (miEvent instanceof MIDestroyedEvent) {
if (miEvent instanceof MIThreadExitEvent) {
cdiList.add(new DestroyedEvent(session,(MIThreadExitEvent)miEvent)); cdiList.add(new DestroyedEvent(session,(MIThreadExitEvent)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));
@ -85,6 +102,13 @@ public class EventManager extends SessionObject implements ICDIEventManager, Obs
cdiList.add(new DestroyedEvent(session)); cdiList.add(new DestroyedEvent(session));
} else if (miEvent instanceof MIDetachedEvent) { } else if (miEvent instanceof MIDetachedEvent) {
cdiList.add(new DisconnectedEvent(session)); cdiList.add(new DisconnectedEvent(session));
} else if (miEvent instanceof MIBreakPointDeletedEvent) {
cdiList.add(new DestroyedEvent(session));
}
} else if (miEvent instanceof MICreatedEvent) {
if (miEvent instanceof MIBreakPointCreatedEvent) {
cdiList.add(new CreatedEvent(session, (MIBreakPointCreatedEvent)miEvent));
}
} }
// Fire the event; // Fire the event;