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.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;
|
||||
|
|
|
@ -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.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()
|
||||
|
|
|
@ -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;
|
||||
|
|
Loading…
Add table
Reference in a new issue