Skip to main content
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMikhail Khodjaiants2005-06-16 16:07:59 +0000
committerMikhail Khodjaiants2005-06-16 16:07:59 +0000
commit3915950c5d30041663bdf5bd37c2fa34dab14eab (patch)
tree9060b83f6261447e3c75ebddaf3ee71847676562
parent4da0ae86ac56642842fd25c87b94b373cfc3adfd (diff)
downloadorg.eclipse.cdt-3915950c5d30041663bdf5bd37c2fa34dab14eab.tar.gz
org.eclipse.cdt-3915950c5d30041663bdf5bd37c2fa34dab14eab.tar.xz
org.eclipse.cdt-3915950c5d30041663bdf5bd37c2fa34dab14eab.zip
Partial fix for bug 79371: Setting breakpoints in the left hand side ruler of the disassembly view is sluggish.
-rw-r--r--debug/org.eclipse.cdt.debug.core/ChangeLog4
-rw-r--r--debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/internal/core/CBreakpointManager.java71
2 files changed, 54 insertions, 21 deletions
diff --git a/debug/org.eclipse.cdt.debug.core/ChangeLog b/debug/org.eclipse.cdt.debug.core/ChangeLog
index 3447bea52cd..e76838c0099 100644
--- a/debug/org.eclipse.cdt.debug.core/ChangeLog
+++ b/debug/org.eclipse.cdt.debug.core/ChangeLog
@@ -1,3 +1,7 @@
+2005-06-16 Mikhail Khodjaiants
+ Partial fix for bug 79371: Setting breakpoints in the left hand side ruler of the disassembly view is sluggish.
+ * CBreakpointManager.java
+
2005-06-14 Mikhail Khodjaiants
Bug 98814: NullPointerException and failed to launch debug session for a project.
* CDebugTarget.java
diff --git a/debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/internal/core/CBreakpointManager.java b/debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/internal/core/CBreakpointManager.java
index 5feb93e255b..f61b79a44e9 100644
--- a/debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/internal/core/CBreakpointManager.java
+++ b/debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/internal/core/CBreakpointManager.java
@@ -18,7 +18,6 @@ import java.util.List;
import java.util.Map;
import java.util.Set;
import org.eclipse.cdt.core.IAddress;
-import org.eclipse.cdt.core.IAddressFactory;
import org.eclipse.cdt.debug.core.CDIDebugModel;
import org.eclipse.cdt.debug.core.CDebugUtils;
import org.eclipse.cdt.debug.core.cdi.CDIException;
@@ -96,11 +95,11 @@ public class CBreakpointManager implements IBreakpointManagerListener, ICDIEvent
fCDIBreakpoints.put( cdiBreakpoint, breakpoint );
}
- protected synchronized ICDIBreakpoint getCDIBreakpoint( ICBreakpoint breakpoint ) {
+ protected ICDIBreakpoint getCDIBreakpoint( ICBreakpoint breakpoint ) {
return (ICDIBreakpoint)fCBreakpoints.get( breakpoint );
}
- protected synchronized ICBreakpoint getCBreakpoint( ICDIBreakpoint cdiBreakpoint ) {
+ protected ICBreakpoint getCBreakpoint( ICDIBreakpoint cdiBreakpoint ) {
return (ICBreakpoint)fCDIBreakpoints.get( cdiBreakpoint );
}
@@ -276,18 +275,25 @@ public class CBreakpointManager implements IBreakpointManagerListener, ICDIEvent
return getBreakpointMap().getCBreakpoint( cdiBreakpoint );
}
- public IAddress getBreakpointAddress( ICBreakpoint breakpoint ) {
+ public IAddress getBreakpointAddress( ICLineBreakpoint breakpoint ) {
if ( breakpoint != null ) {
- ICDIBreakpoint cdiBreakpoint = getBreakpointMap().getCDIBreakpoint( breakpoint );
- if ( cdiBreakpoint instanceof ICDILocationBreakpoint ) {
- ICDILocator locator = ((ICDILocationBreakpoint)cdiBreakpoint).getLocator();
- if ( locator != null ) {
- IAddressFactory factory = getDebugTarget().getAddressFactory();
- BigInteger address = locator.getAddress();
- if ( address != null )
- return factory.createAddress( address );
- }
+ try {
+ return fDebugTarget.getAddressFactory().createAddress( breakpoint.getAddress() );
+ }
+ catch( CoreException e ) {
+ }
+ catch( NumberFormatException e ) {
}
+// ICDIBreakpoint cdiBreakpoint = getBreakpointMap().getCDIBreakpoint( breakpoint );
+// if ( cdiBreakpoint instanceof ICDILocationBreakpoint ) {
+// ICDILocator locator = ((ICDILocationBreakpoint)cdiBreakpoint).getLocator();
+// if ( locator != null ) {
+// IAddressFactory factory = getDebugTarget().getAddressFactory();
+// BigInteger address = locator.getAddress();
+// if ( address != null )
+// return factory.createAddress( address );
+// }
+// }
}
return fDebugTarget.getAddressFactory().getZero();
}
@@ -426,6 +432,19 @@ public class CBreakpointManager implements IBreakpointManagerListener, ICDIEvent
}
if ( breakpoint != null ) {
try {
+ if ( breakpoint instanceof ICLineBreakpoint ) {
+ ICDILocator locator = cdiBreakpoint.getLocator();
+ if ( locator != null ) {
+ BigInteger address = locator.getAddress();
+ if ( address != null ) {
+ ((ICLineBreakpoint)breakpoint).setAddress( address.toString() );
+ }
+ }
+ }
+ }
+ catch( CoreException e1 ) {
+ }
+ try {
breakpoint.setTargetFilter( getDebugTarget() );
}
catch( CoreException e ) {
@@ -516,8 +535,10 @@ public class CBreakpointManager implements IBreakpointManagerListener, ICDIEvent
DebugPlugin.getDefault().asyncExec( new Runnable() {
public void run() {
try {
+ // FIXME: Shouldn't be doing this. The breakpoint management needs to be redesigned.
+ ICDIBreakpoint cdiBreakpoint = null;
synchronized ( getBreakpointMap() ) {
- ICDIBreakpoint cdiBreakpoint = getBreakpointMap().getCDIBreakpoint( breakpoint );
+ cdiBreakpoint = getBreakpointMap().getCDIBreakpoint( breakpoint );
if ( cdiBreakpoint == null ) {
if ( breakpoint instanceof ICFunctionBreakpoint ) {
cdiBreakpoint = target.setFunctionBreakpoint( ICDIBreakpoint.REGULAR,
@@ -530,12 +551,12 @@ public class CBreakpointManager implements IBreakpointManagerListener, ICDIEvent
cdiBreakpoint = target.setLineBreakpoint( ICDIBreakpoint.REGULAR,
(ICDILineLocation)location, condition, true );
}
- if ( !enabled ) {
- cdiBreakpoint.setEnabled( false );
- }
getBreakpointMap().put( breakpoint, cdiBreakpoint );
}
}
+ if ( cdiBreakpoint != null && !enabled ) {
+ cdiBreakpoint.setEnabled( false );
+ }
}
catch( CDIException e ) {
}
@@ -578,15 +599,16 @@ public class CBreakpointManager implements IBreakpointManagerListener, ICDIEvent
DebugPlugin.getDefault().asyncExec( new Runnable() {
public void run() {
try {
+ ICDIWatchpoint cdiWatchpoint = null;
synchronized ( getBreakpointMap() ) {
if ( getBreakpointMap().getCDIBreakpoint( watchpoint ) == null ) {
- ICDIWatchpoint cdiWatchpoint = target.setWatchpoint( ICDIBreakpoint.REGULAR, accessType, expression, condition );
- if ( !enabled ) {
- cdiWatchpoint.setEnabled( false );
- }
+ cdiWatchpoint = target.setWatchpoint( ICDIBreakpoint.REGULAR, accessType, expression, condition );
getBreakpointMap().put( watchpoint, cdiWatchpoint );
}
}
+ if ( !enabled ) {
+ cdiWatchpoint.setEnabled( false );
+ }
}
catch( CDIException e ) {
}
@@ -671,6 +693,13 @@ public class CBreakpointManager implements IBreakpointManagerListener, ICDIEvent
cdiBreakpoint.getCondition().getIgnoreCount(),
cdiBreakpoint.getCondition().getExpression(),
false );
+ ICDILocator locator = cdiBreakpoint.getLocator();
+ if ( locator != null ) {
+ BigInteger address = locator.getAddress();
+ if ( address != null ) {
+ breakpoint.setAddress( address.toString() );
+ }
+ }
getBreakpointMap().put( breakpoint, cdiBreakpoint );
((CBreakpoint)breakpoint).register( true );
return breakpoint;

Back to the top