From 34a4df083218e62f55d626a78b5abbab56fbe155 Mon Sep 17 00:00:00 2001 From: John Cortell Date: Fri, 15 Feb 2008 15:26:56 +0000 Subject: We don't handle the notification of a breakpoint created in an external translation unit. I.e., if the user imports an executable built outside of Eclipse, and the backend reports that a breakpoint has been created in one of its source files (through, say, a backend shell), CBreakpointManager doesn't handle it correctly. --- .../eclipse/cdt/debug/internal/core/CBreakpointManager.java | 12 ++++++++++++ 1 file changed, 12 insertions(+) (limited to 'debug/org.eclipse.cdt.debug.core') 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 8c3e002ed66..9e958281698 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 @@ -28,6 +28,7 @@ import java.util.Set; import org.eclipse.cdt.core.IAddress; import org.eclipse.cdt.core.IAddressFactory; import org.eclipse.cdt.core.IBinaryParser.IBinaryObject; +import org.eclipse.cdt.core.model.ITranslationUnit; import org.eclipse.cdt.debug.core.CDIDebugModel; import org.eclipse.cdt.debug.core.CDebugCorePlugin; import org.eclipse.cdt.debug.core.CDebugUtils; @@ -837,6 +838,17 @@ public class CBreakpointManager implements IBreakpointsListener, IBreakpointMana sourceHandle = ((IStorage)sourceElement).getFullPath().toOSString(); resource = ResourcesPlugin.getWorkspace().getRoot(); } + else if ( sourceElement instanceof ITranslationUnit ) { + ITranslationUnit translationUnit = (ITranslationUnit)sourceElement; + sourceHandle = translationUnit.getPath().toString(); + resource = translationUnit.getResource(); + + // an IExternalTranslationUnit doesn't have an IResource + if (resource == null) { + resource = getProject(); + } + } + breakpoint = createLineBreakpoint( sourceHandle, resource, cdiBreakpoint ); } else if ( cdiBreakpoint instanceof ICDIFunctionBreakpoint ) { -- cgit v1.2.3