diff options
author | Alain Magloire | 2004-11-26 21:45:25 +0000 |
---|---|---|
committer | Alain Magloire | 2004-11-26 21:45:25 +0000 |
commit | b20da5c4730ebdb90b7a58a7ab1824f4704cc697 (patch) | |
tree | 06c5ea1e707d4ea88efb0c7d15d2254624335247 | |
parent | 571c340d3b5a01ac70d31f65bc68d34df13f14dd (diff) | |
download | org.eclipse.cdt-b20da5c4730ebdb90b7a58a7ab1824f4704cc697.tar.gz org.eclipse.cdt-b20da5c4730ebdb90b7a58a7ab1824f4704cc697.tar.xz org.eclipse.cdt-b20da5c4730ebdb90b7a58a7ab1824f4704cc697.zip |
2004-11-26 Alain Magloire
Final fix for PR 79583
* cdi/org/eclipose/cdt/debug/mi/core/cdi/EventManager.java
* cdi/org/eclipose/cdt/debug/mi/core/cdi/SharedLibraryManager.java
3 files changed, 46 insertions, 43 deletions
diff --git a/debug/org.eclipse.cdt.debug.mi.core/ChangeLog b/debug/org.eclipse.cdt.debug.mi.core/ChangeLog index 54b9e1116e3..179b02e1c77 100644 --- a/debug/org.eclipse.cdt.debug.mi.core/ChangeLog +++ b/debug/org.eclipse.cdt.debug.mi.core/ChangeLog @@ -1,4 +1,9 @@ 2004-11-26 Alain Magloire + Final fix for PR 79583 + * cdi/org/eclipose/cdt/debug/mi/core/cdi/EventManager.java + * cdi/org/eclipose/cdt/debug/mi/core/cdi/SharedLibraryManager.java + +2004-11-26 Alain Magloire Final fix for PR 79452 * cdi/org/eclipose/cdt/debug/mi/core/cdi/BreapointManager.java diff --git a/debug/org.eclipse.cdt.debug.mi.core/cdi/org/eclipse/cdt/debug/mi/core/cdi/EventManager.java b/debug/org.eclipse.cdt.debug.mi.core/cdi/org/eclipse/cdt/debug/mi/core/cdi/EventManager.java index 1580c818618..4763f97dc3d 100644 --- a/debug/org.eclipse.cdt.debug.mi.core/cdi/org/eclipse/cdt/debug/mi/core/cdi/EventManager.java +++ b/debug/org.eclipse.cdt.debug.mi.core/cdi/org/eclipse/cdt/debug/mi/core/cdi/EventManager.java @@ -21,7 +21,6 @@ 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.core.cdi.model.ICDIBreakpoint; import org.eclipse.cdt.debug.core.cdi.model.ICDIStackFrame; import org.eclipse.cdt.debug.mi.core.MIException; import org.eclipse.cdt.debug.mi.core.MISession; @@ -33,7 +32,6 @@ import org.eclipse.cdt.debug.mi.core.cdi.event.ExitedEvent; import org.eclipse.cdt.debug.mi.core.cdi.event.MemoryChangedEvent; import org.eclipse.cdt.debug.mi.core.cdi.event.ResumedEvent; import org.eclipse.cdt.debug.mi.core.cdi.event.SuspendedEvent; -import org.eclipse.cdt.debug.mi.core.cdi.model.Breakpoint; import org.eclipse.cdt.debug.mi.core.cdi.model.MemoryBlock; import org.eclipse.cdt.debug.mi.core.cdi.model.Target; import org.eclipse.cdt.debug.mi.core.cdi.model.Thread; @@ -72,7 +70,6 @@ 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.MIVarCreatedEvent; import org.eclipse.cdt.debug.mi.core.event.MIVarDeletedEvent; -import org.eclipse.cdt.debug.mi.core.output.MIBreakpoint; import org.eclipse.cdt.debug.mi.core.output.MIInfo; import org.eclipse.cdt.debug.mi.core.output.MIStackInfoDepthInfo; @@ -370,45 +367,9 @@ public class EventManager extends SessionObject implements ICDIEventManager, Obs if (mgr.isDeferredBreakpoint()) { if (stopped instanceof MISharedLibEvent) { // Check if we have a new library loaded - List eventList = null; try { - eventList = mgr.updateState(currentTarget); + mgr.update(currentTarget); } catch (CDIException e3) { - eventList = Collections.EMPTY_LIST; - } - // A new Libraries loaded, try to set the breakpoints. - if (eventList.size() > 0) { - BreakpointManager bpMgr = session.getBreakpointManager(); - ICDIBreakpoint bpoints[] = null; - try { - bpoints = bpMgr.getDeferredBreakpoints(currentTarget); - } catch (CDIException e) { - bpoints = new ICDIBreakpoint[0]; - } - for (int i = 0; i < bpoints.length; i++) { - if (bpoints[i] instanceof Breakpoint) { - Breakpoint bkpt = (Breakpoint)bpoints[i]; - try { - boolean enable = bkpt.isEnabled(); - bpMgr.setLocationBreakpoint(bkpt); - bpMgr.deleteFromDeferredList(bkpt); - bpMgr.addToBreakpointList(bkpt); - // If the breakpoint was disable in the IDE - // install it but keep it disable - if (!enable) { - bpMgr.disableBreakpoint(bkpt); - } - MIBreakpoint[] miBreakpoints = bkpt.getMIBreakpoints(); - if (miBreakpoints != null && miBreakpoints.length > 0) { - eventList.add(new MIBreakpointCreatedEvent(miSession, miBreakpoints[0].getNumber())); - } - } catch (CDIException e) { - // ignore - } - } - } - MIEvent[] events = (MIEvent[])eventList.toArray(new MIEvent[0]); - miSession.fireEvents(events); } CommandFactory factory = miSession.getCommandFactory(); int type = (lastRunningEvent == null) ? MIRunningEvent.CONTINUE : lastRunningEvent.getType(); diff --git a/debug/org.eclipse.cdt.debug.mi.core/cdi/org/eclipse/cdt/debug/mi/core/cdi/SharedLibraryManager.java b/debug/org.eclipse.cdt.debug.mi.core/cdi/org/eclipse/cdt/debug/mi/core/cdi/SharedLibraryManager.java index e88f5b8f056..323b7ac5673 100644 --- a/debug/org.eclipse.cdt.debug.mi.core/cdi/org/eclipse/cdt/debug/mi/core/cdi/SharedLibraryManager.java +++ b/debug/org.eclipse.cdt.debug.mi.core/cdi/org/eclipse/cdt/debug/mi/core/cdi/SharedLibraryManager.java @@ -18,6 +18,7 @@ import java.util.List; import java.util.Map; import org.eclipse.cdt.debug.core.cdi.CDIException; +import org.eclipse.cdt.debug.core.cdi.model.ICDIBreakpoint; import org.eclipse.cdt.debug.core.cdi.model.ICDISharedLibrary; import org.eclipse.cdt.debug.core.cdi.model.ICDITargetConfiguration; import org.eclipse.cdt.debug.mi.core.IMIConstants; @@ -25,6 +26,7 @@ import org.eclipse.cdt.debug.mi.core.MIException; import org.eclipse.cdt.debug.mi.core.MIFormat; import org.eclipse.cdt.debug.mi.core.MIPlugin; import org.eclipse.cdt.debug.mi.core.MISession; +import org.eclipse.cdt.debug.mi.core.cdi.model.Breakpoint; import org.eclipse.cdt.debug.mi.core.cdi.model.SharedLibrary; import org.eclipse.cdt.debug.mi.core.cdi.model.Target; import org.eclipse.cdt.debug.mi.core.command.CommandFactory; @@ -35,10 +37,12 @@ import org.eclipse.cdt.debug.mi.core.command.MIGDBShow; import org.eclipse.cdt.debug.mi.core.command.MIGDBShowSolibSearchPath; import org.eclipse.cdt.debug.mi.core.command.MIInfoSharedLibrary; import org.eclipse.cdt.debug.mi.core.command.MISharedLibrary; +import org.eclipse.cdt.debug.mi.core.event.MIBreakpointCreatedEvent; import org.eclipse.cdt.debug.mi.core.event.MIEvent; import org.eclipse.cdt.debug.mi.core.event.MISharedLibChangedEvent; import org.eclipse.cdt.debug.mi.core.event.MISharedLibCreatedEvent; import org.eclipse.cdt.debug.mi.core.event.MISharedLibUnloadedEvent; +import org.eclipse.cdt.debug.mi.core.output.MIBreakpoint; import org.eclipse.cdt.debug.mi.core.output.MIGDBShowInfo; import org.eclipse.cdt.debug.mi.core.output.MIGDBShowSolibSearchPathInfo; import org.eclipse.cdt.debug.mi.core.output.MIInfo; @@ -87,13 +91,46 @@ public class SharedLibraryManager extends Manager { } public void update(Target target) throws CDIException { - MISession mi = target.getMISession(); + MISession miSession = target.getMISession(); + Session session = (Session)target.getSession(); List eventList = updateState(target); + // A new Libraries loaded or something change, try to set the breakpoints. + if (eventList.size() > 0) { + BreakpointManager bpMgr = session.getBreakpointManager(); + ICDIBreakpoint bpoints[] = null; + try { + bpoints = bpMgr.getDeferredBreakpoints(target); + } catch (CDIException e) { + bpoints = new ICDIBreakpoint[0]; + } + for (int i = 0; i < bpoints.length; i++) { + if (bpoints[i] instanceof Breakpoint) { + Breakpoint bkpt = (Breakpoint)bpoints[i]; + try { + boolean enable = bkpt.isEnabled(); + bpMgr.setLocationBreakpoint(bkpt); + bpMgr.deleteFromDeferredList(bkpt); + bpMgr.addToBreakpointList(bkpt); + // If the breakpoint was disable in the IDE + // install it but keep it disable + if (!enable) { + bpMgr.disableBreakpoint(bkpt); + } + MIBreakpoint[] miBreakpoints = bkpt.getMIBreakpoints(); + if (miBreakpoints != null && miBreakpoints.length > 0) { + eventList.add(new MIBreakpointCreatedEvent(miSession, miBreakpoints[0].getNumber())); + } + } catch (CDIException e) { + // ignore + } + } + } + } MIEvent[] events = (MIEvent[])eventList.toArray(new MIEvent[0]); - mi.fireEvents(events); + miSession.fireEvents(events); } - public List updateState(Target target) throws CDIException { + private List updateState(Target target) throws CDIException { MISession miSession = target.getMISession(); ICDITargetConfiguration conf = target.getConfiguration(); if (!conf.supportsSharedLibrary()) { |