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:
parent
4fd2644dc0
commit
41e92b5b2d
4 changed files with 102 additions and 10 deletions
|
@ -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;
|
||||||
|
|
|
@ -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;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
|
@ -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) {
|
||||||
|
@ -42,8 +54,7 @@ public class DestroyedEvent implements ICDIDestroyedEvent {
|
||||||
|
|
||||||
public DestroyedEvent(CSession s) {
|
public DestroyedEvent(CSession s) {
|
||||||
session = s;
|
session = s;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @see org.eclipse.cdt.debug.core.cdi.event.ICDIEvent#getSource()
|
* @see org.eclipse.cdt.debug.core.cdi.event.ICDIEvent#getSource()
|
||||||
|
|
|
@ -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,15 +81,34 @@ 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 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;
|
// Fire the event;
|
||||||
|
|
Loading…
Add table
Reference in a new issue