diff options
author | John Cortell | 2008-02-15 15:26:56 +0000 |
---|---|---|
committer | John Cortell | 2008-02-15 15:26:56 +0000 |
commit | 34a4df083218e62f55d626a78b5abbab56fbe155 (patch) | |
tree | 7651a3987bed932be1954738f5f3dfda8dbd1d12 | |
parent | 26f4e54156ef6322655872e0fbee10be0a780a7f (diff) | |
download | org.eclipse.cdt-34a4df083218e62f55d626a78b5abbab56fbe155.tar.gz org.eclipse.cdt-34a4df083218e62f55d626a78b5abbab56fbe155.tar.xz org.eclipse.cdt-34a4df083218e62f55d626a78b5abbab56fbe155.zip |
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.
-rw-r--r-- | debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/internal/core/CBreakpointManager.java | 12 |
1 files changed, 12 insertions, 0 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 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 ) { |