From bcef6f180dee2e1c7d7b334df28a1fbf72943117 Mon Sep 17 00:00:00 2001 From: Mikhail Khodjaiants Date: Thu, 30 Jan 2003 15:59:43 +0000 Subject: [PATCH] Create an address breakpoint if the source locator can not find the file specified by gdb. --- debug/org.eclipse.cdt.debug.core/ChangeLog | 4 ++ .../internal/core/model/CDebugTarget.java | 46 ++++++++++++------- 2 files changed, 34 insertions(+), 16 deletions(-) diff --git a/debug/org.eclipse.cdt.debug.core/ChangeLog b/debug/org.eclipse.cdt.debug.core/ChangeLog index 1d316943169..aea4b96b5c5 100644 --- a/debug/org.eclipse.cdt.debug.core/ChangeLog +++ b/debug/org.eclipse.cdt.debug.core/ChangeLog @@ -1,3 +1,7 @@ +2003-01-30 Mikhail Khodjaiants + Create an address breakpoint if the source locator can not find the file specified by gdb. + * CDebugTarget.java + 2003-01-29 Mikhail Khodjaiants Managing breakpoints from the gdb console (fixes). * CDebugModel.java diff --git a/debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/internal/core/model/CDebugTarget.java b/debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/internal/core/model/CDebugTarget.java index 178fe60c9ba..fa3e6f3f254 100644 --- a/debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/internal/core/model/CDebugTarget.java +++ b/debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/internal/core/model/CDebugTarget.java @@ -1510,27 +1510,17 @@ public class CDebugTarget extends CDebugElement Object sourceElement = ((ICSourceLocator)((IAdaptable)getSourceLocator()).getAdapter( ICSourceLocator.class )).findSourceElement( cdiBreakpoint.getLocation().getFile() ); if ( sourceElement != null && sourceElement instanceof IFile ) { - ICLineBreakpoint breakpoint = CDebugModel.createLineBreakpoint( (IFile)sourceElement, - cdiBreakpoint.getLocation().getLineNumber(), - cdiBreakpoint.isEnabled(), - cdiBreakpoint.getCondition().getIgnoreCount(), - cdiBreakpoint.getCondition().getExpression(), - false ); - getBreakpoints().put( breakpoint, cdiBreakpoint ); - ((CBreakpoint)breakpoint).register( true ); + createLineBreakpoint( (IFile)sourceElement, cdiBreakpoint ); + } + else if ( cdiBreakpoint.getLocation().getAddress() > 0 ) + { + createAddressBreakpoint( cdiBreakpoint ); } } } else if ( cdiBreakpoint.getLocation().getAddress() > 0 ) { - ICAddressBreakpoint breakpoint = CDebugModel.createAddressBreakpoint( getExecFile(), - cdiBreakpoint.getLocation().getAddress(), - cdiBreakpoint.isEnabled(), - cdiBreakpoint.getCondition().getIgnoreCount(), - cdiBreakpoint.getCondition().getExpression(), - false ); - getBreakpoints().put( breakpoint, cdiBreakpoint ); - ((CBreakpoint)breakpoint).register( true ); + createAddressBreakpoint( cdiBreakpoint ); } } catch( CDIException e ) @@ -1541,6 +1531,30 @@ public class CDebugTarget extends CDebugElement } } + private void createLineBreakpoint( IFile file, ICDILocationBreakpoint cdiBreakpoint ) throws CDIException, CoreException + { + ICLineBreakpoint breakpoint = CDebugModel.createLineBreakpoint( file, + cdiBreakpoint.getLocation().getLineNumber(), + cdiBreakpoint.isEnabled(), + cdiBreakpoint.getCondition().getIgnoreCount(), + cdiBreakpoint.getCondition().getExpression(), + false ); + getBreakpoints().put( breakpoint, cdiBreakpoint ); + ((CBreakpoint)breakpoint).register( true ); + } + + private void createAddressBreakpoint( ICDILocationBreakpoint cdiBreakpoint ) throws CDIException, CoreException + { + ICAddressBreakpoint breakpoint = CDebugModel.createAddressBreakpoint( getExecFile(), + cdiBreakpoint.getLocation().getAddress(), + cdiBreakpoint.isEnabled(), + cdiBreakpoint.getCondition().getIgnoreCount(), + cdiBreakpoint.getCondition().getExpression(), + false ); + getBreakpoints().put( breakpoint, cdiBreakpoint ); + ((CBreakpoint)breakpoint).register( true ); + } + private void handleWatchpointCreatedEvent( final ICDIWatchpoint watchpoint ) { Runnable runnable = new Runnable()