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.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.mi.core.event.MIBreakPointChangedEvent;
import org.eclipse.cdt.debug.mi.core.event.MIRegisterChangedEvent;
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) {
session = s;
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.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.MIVarChangedEvent;
@ -32,7 +33,18 @@ public class DestroyedEvent implements ICDIDestroyedEvent {
} else {
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) {
@ -42,8 +54,7 @@ public class DestroyedEvent implements ICDIDestroyedEvent {
public DestroyedEvent(CSession s) {
session = s;
}
}
/**
* @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.event.ICDIEvent;
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.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.MIEvent;
import org.eclipse.cdt.debug.mi.core.event.MIGDBExitEvent;
@ -76,15 +81,34 @@ public class EventManager extends SessionObject implements ICDIEventManager, Obs
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 MIDestroyedEvent) {
if (miEvent instanceof MIThreadExitEvent) {
cdiList.add(new DestroyedEvent(session,(MIThreadExitEvent)miEvent));
} else if (miEvent instanceof MIInferiorExitEvent) {
cdiList.add(new ExitedEvent(session, (MIInferiorExitEvent)miEvent));
} else if (miEvent instanceof MIGDBExitEvent) {
cdiList.add(new DestroyedEvent(session));
} else if (miEvent instanceof MIDetachedEvent) {
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));
}
} else if (miEvent instanceof MIThreadExitEvent) {
cdiList.add(new DestroyedEvent(session,(MIThreadExitEvent)miEvent));
} else if (miEvent instanceof MIInferiorExitEvent) {
cdiList.add(new ExitedEvent(session, (MIInferiorExitEvent)miEvent));
} else if (miEvent instanceof MIGDBExitEvent) {
cdiList.add(new DestroyedEvent(session));
} else if (miEvent instanceof MIDetachedEvent) {
cdiList.add(new DisconnectedEvent(session));
}
// Fire the event;