Skip to main content

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [List Home]
[cdt-patch] Watchpoint

Index: ChangeLog
===================================================================
RCS file: /home/tools/org.eclipse.cdt.debug.mi.core/ChangeLog,v
retrieving revision 1.81
diff -u -r1.81 ChangeLog
--- ChangeLog	28 Jan 2003 03:46:39 -0000	1.81
+++ ChangeLog	28 Jan 2003 19:52:57 -0000
@@ -1,3 +1,16 @@
+2003-01-28 Alain Magloire
+
+	* src/org/eclipse/cdt/debug/mi/core/cdi/model/Breakpoint.java (setMIBreakpoint):
+	New method.
+	* src/org/eclipse/cdt/debug/mi/core/cdi/BreakpointManager.java (update):
+	Reset the new MIBreakpoint on the Breakpoint object.
+	(containsBreakpoint): Removed.
+	(hasBreakpointChanged): Change arguments.
+	* src/org/eclipse/cdt/debug/mi/core/output/MIBreakpoint.java (parser):
+	Better check for watchpoints.
+	* src/org/eclipse/cdt/debug/mi/core/CLIProcessor.java (isChangeBreakpoint):
+	Check for "ignore" and "condition" cli commands.
+
 2003-01-27 Alain Magloire
 
 	* src/org/eclipse/cdt/debug/mi/core/cdi/model/Register.java (getTypeName):
Index: src/org/eclipse/cdt/debug/mi/core/CLIProcessor.java
===================================================================
RCS file: /home/tools/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/CLIProcessor.java,v
retrieving revision 1.4
diff -u -r1.4 CLIProcessor.java
--- src/org/eclipse/cdt/debug/mi/core/CLIProcessor.java	24 Jan 2003 15:54:47 -0000	1.4
+++ src/org/eclipse/cdt/debug/mi/core/CLIProcessor.java	28 Jan 2003 19:52:57 -0000
@@ -46,7 +46,7 @@
 			session.fireEvent(event);
 		} else if (isSettingBreakpoint(operation) ||
 				   isSettingWatchpoint(operation) ||
-				   isEnableBreakpoint(operation) ||
+				   isChangeBreakpoint(operation) ||
 				   isDeletingBreakpoint(operation)) {
 			// We know something change, we just do not know what.
 			// So the easiest way is to let the top layer handle it. 
@@ -113,12 +113,14 @@
 		return isDelete;
 	}
 
-	boolean isEnableBreakpoint(String operation) {
+	boolean isChangeBreakpoint(String operation) {
 		boolean isChange = false;
 		/* changing breaks: enable, disable */
 		if ((operation.equals("dis") || operation.equals("disa") ||
 			(operation.startsWith("disa")  && "disable".indexOf(operation) != -1)) ||
-		    (operation.equals("en") || (operation.startsWith("en") && "enable".indexOf(operation) != -1))) {
+		    (operation.equals("en") || (operation.startsWith("en") && "enable".indexOf(operation) != -1)) ||
+		    (operation.startsWith("ig") && "ignore".indexOf(operation) != -1) ||
+		    (operation.startsWith("cond") && "condition".indexOf(operation) != -1)) {
 			isChange = true;
 		}
 		return isChange;
Index: src/org/eclipse/cdt/debug/mi/core/cdi/BreakpointManager.java
===================================================================
RCS file: /home/tools/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/cdi/BreakpointManager.java,v
retrieving revision 1.29
diff -u -r1.29 BreakpointManager.java
--- src/org/eclipse/cdt/debug/mi/core/cdi/BreakpointManager.java	27 Jan 2003 03:16:29 -0000	1.29
+++ src/org/eclipse/cdt/debug/mi/core/cdi/BreakpointManager.java	28 Jan 2003 19:52:58 -0000
@@ -75,14 +75,8 @@
 		}
 	}
 
-	boolean containsBreakpoint(int number) {
-		return (getBreakpoint(number) != null);
-	}
-
-	boolean hasBreakpointChanged(MIBreakpoint miBreakpoint) {
+	boolean hasBreakpointChanged(Breakpoint point, MIBreakpoint miBreakpoint) {
 		boolean changed = false;
-		int no = miBreakpoint.getNumber();
-		Breakpoint point = getBreakpoint(no);
 		if (point != null) {
 			MIBreakpoint miBreak = point.getMIBreakpoint();
 			changed = (miBreak.isEnabled() != miBreakpoint.isEnabled()) ||
@@ -266,9 +260,11 @@
 		List eventList = new ArrayList(newMIBreakpoints.length);
 		for (int i = 0; i < newMIBreakpoints.length; i++) {
 			int no = newMIBreakpoints[i].getNumber();
-			if (containsBreakpoint(no)) {
-				if (hasBreakpointChanged(newMIBreakpoints[i])) {
+			Breakpoint bp = getBreakpoint(no);
+			if (bp != null) {
+				if (hasBreakpointChanged(bp, newMIBreakpoints[i])) {
 					// Fire ChangedEvent
+					bp.setMIBreakpoint(newMIBreakpoints[i]);
 					eventList.add(new MIBreakpointChangedEvent(no)); 
 				}
 			} else {
Index: src/org/eclipse/cdt/debug/mi/core/cdi/model/Breakpoint.java
===================================================================
RCS file: /home/tools/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/cdi/model/Breakpoint.java,v
retrieving revision 1.2
diff -u -r1.2 Breakpoint.java
--- src/org/eclipse/cdt/debug/mi/core/cdi/model/Breakpoint.java	27 Jan 2003 03:11:19 -0000	1.2
+++ src/org/eclipse/cdt/debug/mi/core/cdi/model/Breakpoint.java	28 Jan 2003 19:52:58 -0000
@@ -31,7 +31,11 @@
 	public MIBreakpoint getMIBreakpoint() {
 		return miBreakpoint;
 	}
-	
+
+	public void setMIBreakpoint(MIBreakpoint newMIBreakpoint) {
+		miBreakpoint = newMIBreakpoint;
+	}
+
 	/**
 	 * @see org.eclipse.cdt.debug.core.cdi.ICDIBreakpoint#getCondition()
 	 */
Index: src/org/eclipse/cdt/debug/mi/core/output/MIBreakpoint.java
===================================================================
RCS file: /home/tools/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/output/MIBreakpoint.java,v
retrieving revision 1.1
diff -u -r1.1 MIBreakpoint.java
--- src/org/eclipse/cdt/debug/mi/core/output/MIBreakpoint.java	8 Jan 2003 21:33:31 -0000	1.1
+++ src/org/eclipse/cdt/debug/mi/core/output/MIBreakpoint.java	28 Jan 2003 19:52:58 -0000
@@ -62,6 +62,7 @@
 	boolean isAWpt;
 	boolean isRWpt;
 	boolean isWWpt;
+	boolean isHdw;
 
 	public MIBreakpoint(MITuple tuple) {
 		parse(tuple);
@@ -75,10 +76,6 @@
 		return type;
 	}
 
-	public boolean isHardware() {
-		return getType().startsWith("hw") || isWatchpoint();
-	}
-
 	public boolean isTemporary() {
 		return getDisposition().equals("del");
 	}
@@ -91,6 +88,15 @@
 		isWpt = w;
 	}
 
+	public boolean isHardware() {
+		return isHdw;
+	}
+
+	public void setHardware(boolean hd) {
+		isWpt = hd;
+		isHdw = hd;
+	}
+
 	public boolean isAccessWatchpoint() {
 		return isAWpt;
 	}
@@ -183,6 +189,29 @@
 				}
 			} else if (var.equals("type")) {
 				type = str;
+				//type="hw watchpoint"
+				if (type.startsWith("hw")) {
+					isHdw = true;
+					isWWpt = true;
+					isWpt = true;
+				}
+				//type="acc watchpoint"
+				if (type.startsWith("acc")) {
+					isWWpt = true;
+					isRWpt = true;
+					isWpt = true;
+				}
+				//type="read watchpoint"
+				if (type.startsWith("read")) {
+					isRWpt = true;
+					isWpt = true;
+				}
+				// ??
+				if (type.equals("watchpoint")) {
+					isWpt = true;
+				}
+				// type="breakpoint"
+				// default ok.
 			} else if (var.equals("disp")) {
 				disp = str;
 			} else if (var.equals("enabled")) {



Back to the top