From fa45945774867ac5a64aa2761ed34a26e897680f Mon Sep 17 00:00:00 2001 From: Alain Magloire Date: Fri, 9 Aug 2002 04:14:33 +0000 Subject: [PATCH] implementing CDI. --- .../cdt/debug/mi/core/cdi/Breakpoint.java | 102 ++++++++++++++++++ .../debug/mi/core/cdi/BreakpointManager.java | 82 +++++++++----- .../cdt/debug/mi/core/cdi/CTarget.java | 16 +-- .../debug/mi/core/cdi/DebugConfiguration.java | 99 +++++++++++++++++ .../cdt/debug/mi/core/cdi/EventManager.java | 16 +-- .../debug/mi/core/cdi/ExpressionManager.java | 16 +-- .../cdt/debug/mi/core/cdi/MemoryManager.java | 16 +-- .../cdt/debug/mi/core/cdi/RuntimeOptions.java | 35 ++++++ .../core/cdi/{CSession.java => Session.java} | 31 ++++-- .../cdt/debug/mi/core/cdi/SessionObject.java | 28 +++++ .../cdt/debug/mi/core/cdi/SignalManager.java | 16 +-- .../cdt/debug/mi/core/cdi/SourceManager.java | 16 +-- .../debug/mi/core/command/MIBreakInsert.java | 4 + .../debug/mi/core/output/MIBreakPoint.java | 23 ++++ 14 files changed, 385 insertions(+), 115 deletions(-) create mode 100644 debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/cdi/Breakpoint.java create mode 100644 debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/cdi/DebugConfiguration.java create mode 100644 debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/cdi/RuntimeOptions.java rename debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/cdi/{CSession.java => Session.java} (81%) create mode 100644 debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/cdi/SessionObject.java diff --git a/debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/cdi/Breakpoint.java b/debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/cdi/Breakpoint.java new file mode 100644 index 00000000000..5dbba038c48 --- /dev/null +++ b/debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/cdi/Breakpoint.java @@ -0,0 +1,102 @@ +package org.eclipse.cdt.debug.mi.core.cdi; + +import org.eclipse.cdt.debug.core.cdi.CDIException; +import org.eclipse.cdt.debug.core.cdi.ICCondition; +import org.eclipse.cdt.debug.core.cdi.ICLocation; +import org.eclipse.cdt.debug.core.cdi.ICLocationBreakpoint; +import org.eclipse.cdt.debug.mi.core.output.MIBreakPoint; + +/** + * @author alain + * + * To change this generated comment edit the template variable "typecomment": + * Window>Preferences>Java>Templates. + * To enable and disable the creation of type comments go to + * Window>Preferences>Java>Code Generation. + */ +public class Breakpoint extends SessionObject implements ICLocationBreakpoint { + + int type; + ICLocation location; + ICCondition condition; + String threadId = ""; + boolean enabled = false; + MIBreakPoint miBreakPoint; + + public Breakpoint(BreakpointManager mgr, MIBreakPoint miBreak) { + super((Session)mgr.getSession()); + miBreakPoint = miBreak; + } + + /** + * @see org.eclipse.cdt.debug.core.cdi.ICBreakpoint#getCondition() + */ + public ICCondition getCondition() throws CDIException { + return condition; + } + + /** + * @see org.eclipse.cdt.debug.core.cdi.ICBreakpoint#getThreadId() + */ + public String getThreadId() throws CDIException { + return threadId; + } + + /** + * @see org.eclipse.cdt.debug.core.cdi.ICBreakpoint#isEnabled() + */ + public boolean isEnabled() throws CDIException { + return enabled; + } + + /** + * @see org.eclipse.cdt.debug.core.cdi.ICBreakpoint#isHardware() + */ + public boolean isHardware() { + return false; + } + + /** + * @see org.eclipse.cdt.debug.core.cdi.ICBreakpoint#isTemporary() + */ + public boolean isTemporary() { + return false; + } + + /** + * @see org.eclipse.cdt.debug.core.cdi.ICBreakpoint#setCondition(ICCondition) + */ + public void setCondition(ICCondition condition) throws CDIException { + this.condition = condition; + } + + /** + * @see org.eclipse.cdt.debug.core.cdi.ICBreakpoint#setEnabled(boolean) + */ + public void setEnabled(boolean enable) throws CDIException { + /* + if (enable == false && enabled == true) { + if (miBreak != null) { + MICommand cmd = new MIBreakDisable(miBreak.getNumber()); + } + } else if (enable == true && enabled == false) { + if (miBreak != null) { + MICommand cmd = new MIBreakEnable(miBreak.getNumber()); + } else { + MIBreakInsert cmd = new MIBreakInsert(); + miSession.postCommand(cmd); + miBreak = cmd.getBreakInsertInfo(); + } + } + enabled = enable; + */ + } + + /** + * @see org.eclipse.cdt.debug.core.cdi.ICLocationBreakpoint#getLocation() + */ + public ICLocation getLocation() throws CDIException { + return location; + } + +} diff --git a/debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/cdi/BreakpointManager.java b/debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/cdi/BreakpointManager.java index 9d82a1d41f5..5494c4fc1e4 100644 --- a/debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/cdi/BreakpointManager.java +++ b/debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/cdi/BreakpointManager.java @@ -5,6 +5,9 @@ */ package org.eclipse.cdt.debug.mi.core.cdi; +import java.util.ArrayList; +import java.util.List; + import org.eclipse.cdt.debug.core.cdi.CDIException; import org.eclipse.cdt.debug.core.cdi.ICBreakpoint; import org.eclipse.cdt.debug.core.cdi.ICBreakpointManager; @@ -13,27 +16,30 @@ import org.eclipse.cdt.debug.core.cdi.ICCatchpoint; import org.eclipse.cdt.debug.core.cdi.ICCondition; import org.eclipse.cdt.debug.core.cdi.ICLocation; import org.eclipse.cdt.debug.core.cdi.ICLocationBreakpoint; -import org.eclipse.cdt.debug.core.cdi.ICSession; import org.eclipse.cdt.debug.core.cdi.ICWatchpoint; -import org.eclipse.cdt.debug.mi.core.MISession; +import org.eclipse.cdt.debug.mi.core.MIException; +import org.eclipse.cdt.debug.mi.core.command.CommandFactory; +import org.eclipse.cdt.debug.mi.core.command.MIBreakInsert; +import org.eclipse.cdt.debug.mi.core.output.MIBreakInsertInfo; +import org.eclipse.cdt.debug.mi.core.output.MIBreakPoint; /** * */ -public class BreakpointManager implements ICBreakpointManager { +public class BreakpointManager extends SessionObject implements ICBreakpointManager { - MISession session; - ICBreakpoint[] breakpoints = new ICBreakpoint[0]; + List breakList; - public BreakpointManager(MISession s) { - session = s; + public BreakpointManager(Session session) { + super(session); + breakList = new ArrayList(1); } /** * @see org.eclipse.cdt.debug.core.cdi.ICBreakpointManager#deleteAllBreakpoints() */ public void deleteAllBreakpoints() throws CDIException { - deleteBreakpoints(breakpoints); + deleteBreakpoints(getBreakpoints()); } /** @@ -46,23 +52,14 @@ public class BreakpointManager implements ICBreakpointManager { /** * @see org.eclipse.cdt.debug.core.cdi.ICBreakpointManager#deleteBreakpoints(ICBreakpoint[]) */ - public void deleteBreakpoints(ICBreakpoint[] breakpoints) - throws CDIException { - } - - /** - * @see org.eclipse.cdt.debug.core.cdi.ICBreakpointManager#getBreakpoint(String) - */ - public ICBreakpoint getBreakpoint(String breakpointId) - throws CDIException { - return null; + public void deleteBreakpoints(ICBreakpoint[] breakpoints) throws CDIException { } /** * @see org.eclipse.cdt.debug.core.cdi.ICBreakpointManager#getBreakpoints() */ public ICBreakpoint[] getBreakpoints() throws CDIException { - return breakpoints; + return (ICBreakpoint[])breakList.toArray(new ICBreakpoint[breakList.size()]); } /** @@ -88,7 +85,45 @@ public class BreakpointManager implements ICBreakpointManager { boolean enabled, String threadId) throws CDIException { - return null; + + boolean hardware = type == ICBreakpoint.HARDWARE; + boolean temporary = type == ICBreakpoint.TEMPORARY; + String exprCond = condition.getExpression(); + int ignoreCount = condition.getIgnoreCount(); + String line = ""; + + if (location.getFile() != null) { + line = location.getFile().getPath() + ":"; + if (location.getFunction() != null) { + line += location.getFunction(); + } else { + line += Integer.toString(location.getLineNumber()); + } + } else { + line = "*" + Long.toString(location.getAddress()); + } + + Session s = (Session)getSession(); + CommandFactory factory = s.getMISession().getCommandFactory(); + MIBreakInsert breakInsert = factory.createMIBreakInsert(temporary, hardware, + exprCond, ignoreCount, line); + MIBreakPoint[] points = null; + try { + MIBreakInsertInfo info = breakInsert.getMIBreakInsertInfo(); + if (info == null) { + //throw new CDIException(); + } + points = info.getBreakPoints(); + if (points == null || points.length == 0) { + //throw new CDIException(); + } + } catch (MIException e) { + // throw new CDIException(e); + } + + Breakpoint bkpt= new Breakpoint(this, points[0]); + breakList.add(bkpt); + return bkpt; } /** @@ -103,11 +138,4 @@ public class BreakpointManager implements ICBreakpointManager { throws CDIException { return null; } - - /** - * @see org.eclipse.cdt.debug.core.cdi.ICSessionObject#getSession() - */ - public ICSession getSession() { - return null; - } } diff --git a/debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/cdi/CTarget.java b/debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/cdi/CTarget.java index a1eaca8de20..3853f596aa6 100644 --- a/debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/cdi/CTarget.java +++ b/debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/cdi/CTarget.java @@ -18,7 +18,6 @@ import org.eclipse.cdt.debug.core.cdi.model.ICRegisterGroup; import org.eclipse.cdt.debug.core.cdi.model.ICSharedLibrary; import org.eclipse.cdt.debug.core.cdi.model.ICTarget; import org.eclipse.cdt.debug.core.cdi.model.ICThread; -import org.eclipse.cdt.debug.mi.core.MISession; /** * @author alain @@ -28,12 +27,10 @@ import org.eclipse.cdt.debug.mi.core.MISession; * To enable and disable the creation of type comments go to * Window>Preferences>Java>Code Generation. */ -public class CTarget implements ICTarget { +public class CTarget extends SessionObject implements ICTarget { - MISession session; - - public CTarget(MISession s) { - session = s; + public CTarget(Session session) { + super(session); } /** @@ -106,13 +103,6 @@ public class CTarget implements ICTarget { return null; } - /** - * @see org.eclipse.cdt.debug.core.cdi.model.ICTarget#getSession() - */ - public ICSession getSession() { - return null; - } - /** * @see org.eclipse.cdt.debug.core.cdi.model.ICTarget#getSharedLibraries() */ diff --git a/debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/cdi/DebugConfiguration.java b/debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/cdi/DebugConfiguration.java new file mode 100644 index 00000000000..44d2981280c --- /dev/null +++ b/debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/cdi/DebugConfiguration.java @@ -0,0 +1,99 @@ +package org.eclipse.cdt.debug.mi.core.cdi; + +import org.eclipse.cdt.debug.core.cdi.ICDebugConfiguration; + +/** + * @author alain + * + * To change this generated comment edit the template variable "typecomment": + * Window>Preferences>Java>Templates. + * To enable and disable the creation of type comments go to + * Window>Preferences>Java>Code Generation. + */ +public class DebugConfiguration implements ICDebugConfiguration { + + /** + * @see org.eclipse.cdt.debug.core.cdi.ICDebugConfiguration#supportsBreakpoints() + */ + public boolean supportsBreakpoints() { + return false; + } + + /** + * @see org.eclipse.cdt.debug.core.cdi.ICDebugConfiguration#supportsDisconnect() + */ + public boolean supportsDisconnect() { + return false; + } + + /** + * @see org.eclipse.cdt.debug.core.cdi.ICDebugConfiguration#supportsExpressionEvaluation() + */ + public boolean supportsExpressionEvaluation() { + return false; + } + + /** + * @see org.eclipse.cdt.debug.core.cdi.ICDebugConfiguration#supportsInstructionStepping() + */ + public boolean supportsInstructionStepping() { + return false; + } + + /** + * @see org.eclipse.cdt.debug.core.cdi.ICDebugConfiguration#supportsMemoryModification() + */ + public boolean supportsMemoryModification() { + return false; + } + + /** + * @see org.eclipse.cdt.debug.core.cdi.ICDebugConfiguration#supportsMemoryRetrieval() + */ + public boolean supportsMemoryRetrieval() { + return false; + } + + /** + * @see org.eclipse.cdt.debug.core.cdi.ICDebugConfiguration#supportsRegisterModification() + */ + public boolean supportsRegisterModification() { + return false; + } + + /** + * @see org.eclipse.cdt.debug.core.cdi.ICDebugConfiguration#supportsRegisters() + */ + public boolean supportsRegisters() { + return false; + } + + /** + * @see org.eclipse.cdt.debug.core.cdi.ICDebugConfiguration#supportsRestart() + */ + public boolean supportsRestart() { + return false; + } + + /** + * @see org.eclipse.cdt.debug.core.cdi.ICDebugConfiguration#supportsStepping() + */ + public boolean supportsStepping() { + return false; + } + + /** + * @see org.eclipse.cdt.debug.core.cdi.ICDebugConfiguration#supportsSuspendResume() + */ + public boolean supportsSuspendResume() { + return false; + } + + /** + * @see org.eclipse.cdt.debug.core.cdi.ICDebugConfiguration#supportsTerminate() + */ + public boolean supportsTerminate() { + return false; + } + +} diff --git a/debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/cdi/EventManager.java b/debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/cdi/EventManager.java index ff8a8590a67..51a37f59fa2 100644 --- a/debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/cdi/EventManager.java +++ b/debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/cdi/EventManager.java @@ -8,7 +8,6 @@ package org.eclipse.cdt.debug.mi.core.cdi; import org.eclipse.cdt.debug.core.cdi.ICEventManager; import org.eclipse.cdt.debug.core.cdi.ICSession; import org.eclipse.cdt.debug.core.cdi.event.ICEventListener; -import org.eclipse.cdt.debug.mi.core.MISession; /** * @author alain @@ -18,12 +17,10 @@ import org.eclipse.cdt.debug.mi.core.MISession; * To enable and disable the creation oEventManagerts go to * Window>Preferences>Java>Code Generation. */ -public class EventManager implements ICEventManager { +public class EventManager extends SessionObject implements ICEventManager { - MISession session; - - public EventManager(MISession s) { - session = s; + public EventManager(Session session) { + super(session); } /** @@ -38,11 +35,4 @@ public class EventManager implements ICEventManager { public void removeEventListener(ICEventListener listener) { } - /** - * @see org.eclipse.cdt.debug.core.cdi.ICSessionObject#getSession() - */ - public ICSession getSession() { - return null; - } - } diff --git a/debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/cdi/ExpressionManager.java b/debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/cdi/ExpressionManager.java index 862df16d65a..3c6a4db91a6 100644 --- a/debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/cdi/ExpressionManager.java +++ b/debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/cdi/ExpressionManager.java @@ -9,7 +9,6 @@ import org.eclipse.cdt.debug.core.cdi.CDIException; import org.eclipse.cdt.debug.core.cdi.ICExpressionManager; import org.eclipse.cdt.debug.core.cdi.ICSession; import org.eclipse.cdt.debug.core.cdi.model.ICExpression; -import org.eclipse.cdt.debug.mi.core.MISession; /** * @author alain @@ -19,12 +18,10 @@ import org.eclipse.cdt.debug.mi.core.MISession; * To enable and disable the creation of type comments go to * Window>Preferences>Java>Code Generation. */ -public class ExpressionManager implements ICExpressionManager { +public class ExpressionManager extends SessionObject implements ICExpressionManager { - MISession session; - - public ExpressionManager(MISession s) { - session = s; + public ExpressionManager(Session session) { + super(session); } /** @@ -61,11 +58,4 @@ public class ExpressionManager implements ICExpressionManager { throws CDIException { } - /** - * @see org.eclipse.cdt.debug.core.cdi.ICSessionObject#getSession() - */ - public ICSession getSession() { - return null; - } - } diff --git a/debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/cdi/MemoryManager.java b/debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/cdi/MemoryManager.java index 1e818f8faab..aadb1eb99fc 100644 --- a/debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/cdi/MemoryManager.java +++ b/debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/cdi/MemoryManager.java @@ -9,7 +9,6 @@ import org.eclipse.cdt.debug.core.cdi.CDIException; import org.eclipse.cdt.debug.core.cdi.ICMemoryManager; import org.eclipse.cdt.debug.core.cdi.ICSession; import org.eclipse.cdt.debug.core.cdi.model.ICMemoryBlock; -import org.eclipse.cdt.debug.mi.core.MISession; /** * @author alain @@ -19,12 +18,10 @@ import org.eclipse.cdt.debug.mi.core.MISession; * To enable and disable the creation of type comments go to * Window>Preferences>Java>Code Generation. */ -public class MemoryManager implements ICMemoryManager { +public class MemoryManager extends SessionObject implements ICMemoryManager { - MISession session; - - public MemoryManager(MISession s) { - session = s; + public MemoryManager(Session session) { + super(session); } /** @@ -66,11 +63,4 @@ public class MemoryManager implements ICMemoryManager { throws CDIException { } - /** - * @see org.eclipse.cdt.debug.core.cdi.ICSessionObject#getSession() - */ - public ICSession getSession() { - return null; - } - } diff --git a/debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/cdi/RuntimeOptions.java b/debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/cdi/RuntimeOptions.java new file mode 100644 index 00000000000..de4c64249ab --- /dev/null +++ b/debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/cdi/RuntimeOptions.java @@ -0,0 +1,35 @@ +package org.eclipse.cdt.debug.mi.core.cdi; + +import java.util.Properties; + +import org.eclipse.cdt.debug.core.cdi.ICRuntimeOptions; + +/** + * @author alain + * + * To change this generated comment edit the template variable "typecomment": + * Window>Preferences>Java>Templates. + * To enable and disable the creation of type comments go to + * Window>Preferences>Java>Code Generation. + */ +public class RuntimeOptions implements ICRuntimeOptions { + + /** + * @see org.eclipse.cdt.debug.core.cdi.ICRuntimeOptions#setArguments(String) + */ + public void setArguments(String args) { + } + + /** + * @see org.eclipse.cdt.debug.core.cdi.ICRuntimeOptions#setEnvironment(Properties) + */ + public void setEnvironment(Properties props) { + } + + /** + * @see org.eclipse.cdt.debug.core.cdi.ICRuntimeOptions#setWorkingDirectory(String) + */ + public void setWorkingDirectory(String wd) { + } + +} diff --git a/debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/cdi/CSession.java b/debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/cdi/Session.java similarity index 81% rename from debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/cdi/CSession.java rename to debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/cdi/Session.java index 1c2f9564866..dbe26901c53 100644 --- a/debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/cdi/CSession.java +++ b/debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/cdi/Session.java @@ -14,6 +14,7 @@ import org.eclipse.cdt.debug.core.cdi.ICDebugConfiguration; import org.eclipse.cdt.debug.core.cdi.ICEventManager; import org.eclipse.cdt.debug.core.cdi.ICExpressionManager; import org.eclipse.cdt.debug.core.cdi.ICMemoryManager; +import org.eclipse.cdt.debug.core.cdi.ICRuntimeOptions; import org.eclipse.cdt.debug.core.cdi.ICSession; import org.eclipse.cdt.debug.core.cdi.ICSignalManager; import org.eclipse.cdt.debug.core.cdi.ICSourceManager; @@ -23,7 +24,7 @@ import org.eclipse.cdt.debug.mi.core.MISession; /** * @see org.eclipse.cdt.debug.core.cdi.ICSession */ -public class CSession implements ICSession { +public class Session implements ICSession { Properties props; MISession session; @@ -35,16 +36,20 @@ public class CSession implements ICSession { SourceManager sourceManager; CTarget ctarget; - public CSession(MISession s) { + public Session(MISession s) { session = s; props = new Properties(); - breakpointManager = new BreakpointManager(session); - eventManager = new EventManager(session); - expressionManager = new ExpressionManager(session); - memoryManager = new MemoryManager(session); - signalManager = new SignalManager(session); - sourceManager = new SourceManager(session); - ctarget = new CTarget(session); + breakpointManager = new BreakpointManager(this); + eventManager = new EventManager(this); + expressionManager = new ExpressionManager(this); + memoryManager = new MemoryManager(this); + signalManager = new SignalManager(this); + sourceManager = new SourceManager(this); + ctarget = new CTarget(this); + } + + MISession getMISession() { + return session; } /** @@ -128,7 +133,13 @@ public class CSession implements ICSession { * @see org.eclipse.cdt.debug.core.cdi.ICSuration() */ public ICDebugConfiguration getConfiguration() { - return null; + return new DebugConfiguration(); } + /** + * @see org.eclipse.cdt.debug.core.cdi.ICSession#getRuntimeOptions() + */ + public ICRuntimeOptions getRuntimeOptions() { + return new RuntimeOptions(); + } } diff --git a/debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/cdi/SessionObject.java b/debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/cdi/SessionObject.java new file mode 100644 index 00000000000..559b6a84e30 --- /dev/null +++ b/debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/cdi/SessionObject.java @@ -0,0 +1,28 @@ +package org.eclipse.cdt.debug.mi.core.cdi; + +import org.eclipse.cdt.debug.core.cdi.ICSession; +import org.eclipse.cdt.debug.core.cdi.ICSessionObject; + +/** + * @author alain + * + * To change this generated comment edit the template variable "typecomment": + * Window>Preferences>Java>Templates. + * To enable and disable the creation of type comments go to + * Window>Preferences>Java>Code Generation. + */ +public class SessionObject implements ICSessionObject { + + Session session; + + public SessionObject (Session session) { + this.session = session; + } + + /** + * @see org.eclipse.cdt.debug.core.cdi.ICSessionObject#getSession() + */ + public ICSession getSession() { + return session; + } +} diff --git a/debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/cdi/SignalManager.java b/debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/cdi/SignalManager.java index 0a64a5425d1..b84a696d462 100644 --- a/debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/cdi/SignalManager.java +++ b/debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/cdi/SignalManager.java @@ -9,7 +9,6 @@ import org.eclipse.cdt.debug.core.cdi.CDIException; import org.eclipse.cdt.debug.core.cdi.ICSession; import org.eclipse.cdt.debug.core.cdi.ICSignal; import org.eclipse.cdt.debug.core.cdi.ICSignalManager; -import org.eclipse.cdt.debug.mi.core.MISession; /** * @author alain @@ -19,12 +18,10 @@ import org.eclipse.cdt.debug.mi.core.MISession; * To enable and disable the creation of type comments go to * Window>Preferences>Java>Code Generation. */ -public class SignalManager implements ICSignalManager { +public class SignalManager extends SessionObject implements ICSignalManager { - MISession session; - - public SignalManager(MISession s) { - session = s; + public SignalManager(Session session) { + super(session); } /** @@ -34,11 +31,4 @@ public class SignalManager implements ICSignalManager { return null; } - /** - * @see org.eclipse.cdt.debug.core.cdi.ICSessionObject#getSession() - */ - public ICSession getSession() { - return null; - } - } diff --git a/debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/cdi/SourceManager.java b/debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/cdi/SourceManager.java index 92936952ae8..eb91ff0c1b6 100644 --- a/debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/cdi/SourceManager.java +++ b/debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/cdi/SourceManager.java @@ -10,7 +10,6 @@ import java.io.File; import org.eclipse.cdt.debug.core.cdi.CDIException; import org.eclipse.cdt.debug.core.cdi.ICSession; import org.eclipse.cdt.debug.core.cdi.ICSourceManager; -import org.eclipse.cdt.debug.mi.core.MISession; /** * @author alain @@ -20,12 +19,10 @@ import org.eclipse.cdt.debug.mi.core.MISession; * To enable and disable the creation of type comments go to * Window>Preferences>Java>Code Generation. */ -public class SourceManager implements ICSourceManager { +public class SourceManager extends SessionObject implements ICSourceManager { - MISession session; - - public SourceManager(MISession s) { - session = s; + public SourceManager(Session session) { + super(session); } /** @@ -47,11 +44,4 @@ public class SourceManager implements ICSourceManager { public void set(File[] directories) throws CDIException { } - /** - * @see org.eclipse.cdt.debug.core.cdi.ICSessionObject#getSession() - */ - public ICSession getSession() { - return null; - } - } diff --git a/debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/command/MIBreakInsert.java b/debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/command/MIBreakInsert.java index 4a2b5f0e6ec..f3668c805d4 100644 --- a/debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/command/MIBreakInsert.java +++ b/debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/command/MIBreakInsert.java @@ -103,6 +103,10 @@ public class MIBreakInsert extends MICommand setParameters(new String[]{line}); } + public MIBreakInsertInfo getMIBreakInsertInfo() throws MIException { + return (MIBreakInsertInfo)getMIInfo(); + } + public MIInfo getMIInfo() throws MIException { MIInfo info = null; MIOutput out = getMIOutput(); diff --git a/debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/output/MIBreakPoint.java b/debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/output/MIBreakPoint.java index 6f5aaf16b93..5c5179b6bb5 100644 --- a/debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/output/MIBreakPoint.java +++ b/debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/output/MIBreakPoint.java @@ -7,6 +7,12 @@ package org.eclipse.cdt.debug.mi.core.output; /** * Contain info about the GDB/MI breakpoint info. + * -break-insert -t -c 2 main + * ^done,bkpt={number="1",type="breakpoint",disp="del",enabled="y",addr="0x0804846b",func="main",file="hello.c",line="4",cond="2",times="0"} + * (gdb) + * -break-insert -h -i 2 main + * ^done,bkpt={number="2",type="hw breakpoint",disp="keep",enabled="y",addr="0x0804846b",func="main",file="hello.c",line="4",times="0",ignore="2"} + * (gdb) */ public class MIBreakPoint { @@ -20,6 +26,8 @@ public class MIBreakPoint { int line; int times; String what = ""; + String cond = ""; + int ignore; public MIBreakPoint(MITuple tuple) { parse(tuple); @@ -65,6 +73,14 @@ public class MIBreakPoint { return what; } + public int getIgnoreCount() { + return ignore; + } + + public String getCondition() { + return cond; + } + void parse(MITuple tuple) { MIResult[] results = tuple.getMIResults(); for (int i = 0; i < results.length; i++) { @@ -107,6 +123,13 @@ public class MIBreakPoint { } } else if (var.equals("what") || var.equals("exp")) { what = str; + } else if (var.equals("ignore")) { + try { + ignore = Integer.parseInt(str.trim()); + } catch (NumberFormatException e) { + } + } else if (var.equals("cond")) { + cond = str; } } }