Skip to main content
aboutsummaryrefslogtreecommitdiffstats
path: root/debug
diff options
context:
space:
mode:
authorAlena Laskavaia2008-11-12 17:39:19 +0000
committerAlena Laskavaia2008-11-12 17:39:19 +0000
commitc391a022253a2a655750a999a412c5721906e75f (patch)
tree12928dab5d1bca619123d40c38aa31916e6eafe6 /debug
parentba7746ffcba7c808deb5c851363087eb22cf042a (diff)
downloadorg.eclipse.cdt-c391a022253a2a655750a999a412c5721906e75f.tar.gz
org.eclipse.cdt-c391a022253a2a655750a999a412c5721906e75f.tar.xz
org.eclipse.cdt-c391a022253a2a655750a999a412c5721906e75f.zip
[247851] - applied patch - line breakpoints on linked resources
Diffstat (limited to 'debug')
-rw-r--r--debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/internal/core/CBreakpointManager.java24
-rw-r--r--debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/internal/core/sourcelookup/CSourceLookupDirector.java17
2 files changed, 19 insertions, 22 deletions
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 b244c6b58d8..55442bff794 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
@@ -1220,7 +1220,18 @@ public class CBreakpointManager implements IBreakpointsListener, IBreakpointMana
private boolean isTargetBreakpoint( ICBreakpoint breakpoint ) {
if ( breakpoint instanceof ICAddressBreakpoint )
return supportsAddressBreakpoint( (ICAddressBreakpoint)breakpoint );
-
+
+ // If the breakpoint is set on a resource in this project
+ // it should be enabled irrespective of what the CSourceLookupDirector thinks
+ if (breakpoint.getMarker() != null) {
+ IProject project = breakpoint.getMarker().getResource().getProject();
+ if (getProject().equals(project))
+ return true;
+ if (CDebugUtils.isReferencedProject(getProject(), project))
+ return true;
+ }
+
+ // Is it a line breakpoint with source handle ?
if ( breakpointUsesSourceMatching( breakpoint ) ) {
try {
String handle = breakpoint.getSourceHandle();
@@ -1232,10 +1243,10 @@ public class CBreakpointManager implements IBreakpointsListener, IBreakpointMana
}
}
catch( CoreException e ) {
- return false;
+ CDebugCorePlugin.log(e);
}
- }
- else {
+ } else {
+ // Check the marker resource against the source containers ...
IResource resource = breakpoint.getMarker().getResource();
IProject project = resource.getProject();
if ( project != null && project.exists() ) {
@@ -1244,12 +1255,9 @@ public class CBreakpointManager implements IBreakpointsListener, IBreakpointMana
return ((ICSourceLocator)sl).contains( project );
else if ( sl instanceof CSourceLookupDirector )
return ((CSourceLookupDirector)sl).contains( project );
- if ( project.equals( getProject() ) )
- return true;
- return CDebugUtils.isReferencedProject( getProject(), project );
}
}
- return true;
+ return false;
}
public boolean supportsBreakpoint( ICBreakpoint breakpoint ) {
diff --git a/debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/internal/core/sourcelookup/CSourceLookupDirector.java b/debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/internal/core/sourcelookup/CSourceLookupDirector.java
index e0e316b0c4d..f7957c02c94 100644
--- a/debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/internal/core/sourcelookup/CSourceLookupDirector.java
+++ b/debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/internal/core/sourcelookup/CSourceLookupDirector.java
@@ -14,14 +14,13 @@ package org.eclipse.cdt.debug.internal.core.sourcelookup;
import java.io.File;
import java.util.HashSet;
import java.util.Set;
+
import org.eclipse.cdt.debug.core.model.ICBreakpoint;
import org.eclipse.cdt.debug.core.sourcelookup.AbsolutePathSourceContainer;
import org.eclipse.cdt.debug.core.sourcelookup.MappingSourceContainer;
import org.eclipse.core.resources.IContainer;
import org.eclipse.core.resources.IFile;
-import org.eclipse.core.resources.IMarker;
import org.eclipse.core.resources.IProject;
-import org.eclipse.core.resources.IResource;
import org.eclipse.core.runtime.CoreException;
import org.eclipse.core.runtime.IPath;
import org.eclipse.core.runtime.Path;
@@ -39,10 +38,10 @@ import org.eclipse.debug.core.sourcelookup.containers.WorkspaceSourceContainer;
*/
public class CSourceLookupDirector extends AbstractSourceLookupDirector {
- private static Set fSupportedTypes;
+ private static Set<String> fSupportedTypes;
static {
- fSupportedTypes = new HashSet();
+ fSupportedTypes = new HashSet<String>();
fSupportedTypes.add( WorkspaceSourceContainer.TYPE_ID );
fSupportedTypes.add( ProjectSourceContainer.TYPE_ID );
fSupportedTypes.add( FolderSourceContainer.TYPE_ID );
@@ -77,16 +76,6 @@ public class CSourceLookupDirector extends AbstractSourceLookupDirector {
public boolean contains( ICBreakpoint breakpoint ) {
try {
String handle = breakpoint.getSourceHandle();
- // Check if the breakpoint's resource is a link - we have to handle
- // this case differently.
- // See https://bugs.eclipse.org/bugs/show_bug.cgi?id=125603
- IMarker marker = breakpoint.getMarker();
- if ( marker != null ) {
- IResource resource = marker.getResource();
- if ( resource.isLinked() && resource.getLocation().toOSString().equals( handle ) ) {
- return contains( resource.getProject() );
- }
- }
ISourceContainer[] containers = getSourceContainers();
for ( int i = 0; i < containers.length; ++i ) {
if ( contains( containers[i], handle ) )

Back to the top