Index:
ChangeLog =================================================================== RCS
file: /home/tools/org.eclipse.cdt.debug.core/ChangeLog,v retrieving revision
1.120 diff -u -r1.120 ChangeLog --- ChangeLog 3 Feb 2003 23:42:33
-0000 1.120 +++ ChangeLog 4 Feb 2003 21:26:44 -0000 @@ -1,4 +1,9
@@ 2003-02-03 Mikhail Khodjaiants + Filter out breakpoints set
in unrelated projects. + * CDebugTarget.java + *
CDebugUtils.java + +2003-02-03 Mikhail
Khodjaiants Implemention of the 'handle' command of the 'Signals'
view. * ICDISignal.java: added the 'handle'
method * CSignal.java: implementation of the 'handle'
command. Index:
src/org/eclipse/cdt/debug/internal/core/CDebugUtils.java =================================================================== RCS
file:
/home/tools/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/internal/core/CDebugUtils.java,v retrieving
revision 1.7 diff -u -r1.7 CDebugUtils.java ---
src/org/eclipse/cdt/debug/internal/core/CDebugUtils.java 4 Nov 2002
01:40:24 -0000 1.7 +++
src/org/eclipse/cdt/debug/internal/core/CDebugUtils.java 4 Feb 2003
21:26:45 -0000 @@ -7,6 +7,7 @@ import
java.util.Arrays; +import
org.eclipse.core.resources.IProject; import
org.eclipse.core.runtime.CoreException; import
org.eclipse.core.runtime.IStatus; import
org.eclipse.debug.core.DebugPlugin; @@ -222,5 +223,25
@@ sb.append( text
); } return
sb.toString(); - } + } + + public static
boolean isReferencedProject( IProject parent, IProject project
) + { + if ( parent != null && parent.exists()
) + { + try + { + IProject[]
projects = parent.getReferencedProjects(); + for ( int
i = 0; i < projects.length; ++i
) + { + if (
projects[i].exists() && ( projects[i].equals( project ) ||
isReferencedProject( projects[i], project ) )
) + return
true; + } + } + catch(
CoreException e
) + { + } + } + return
false; + } } Index:
src/org/eclipse/cdt/debug/internal/core/model/CDebugTarget.java =================================================================== RCS
file:
/home/tools/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/internal/core/model/CDebugTarget.java,v retrieving
revision 1.80 diff -u -r1.80 CDebugTarget.java ---
src/org/eclipse/cdt/debug/internal/core/model/CDebugTarget.java 3 Feb 2003
21:34:39 -0000 1.80 +++
src/org/eclipse/cdt/debug/internal/core/model/CDebugTarget.java 4 Feb 2003
21:26:45 -0000 @@ -82,6 +82,7 @@ import
org.eclipse.cdt.debug.internal.core.sourcelookup.DisassemblyManager; import
org.eclipse.core.resources.IFile; import
org.eclipse.core.resources.IMarkerDelta; +import
org.eclipse.core.resources.IProject; import
org.eclipse.core.resources.IResource; import
org.eclipse.core.runtime.CoreException; import
org.eclipse.core.runtime.IAdaptable; @@ -340,13 +341,36
@@ IBreakpoint[] bps =
(IBreakpoint[])manager.getBreakpoints( CDebugModel.getPluginIdentifier()
); for ( int i = 0; i < bps.length; i++
) { - if ( bps[i]
instanceof ICBreakpoint && findCDIBreakpoint( bps[i] ) == null )
+ if ( bps[i] instanceof ICBreakpoint &&
isTargetBreakpoint( bps[i] ) && findCDIBreakpoint( bps[i] ) == null )
{ breakpointAdded(
(ICBreakpoint)bps[i]
); } } setRetryBreakpoints(
false ); } + } + + private boolean
isTargetBreakpoint( IBreakpoint bp ) + { + IProject
project = bp.getMarker().getResource().getProject(); + if (
project != null && project.exists()
) + { + if ( getSourceLocator() instanceof
IAdaptable ) + { + ICSourceLocator
sl = (ICSourceLocator)((IAdaptable)getSourceLocator()).getAdapter(
ICSourceLocator.class ); + if ( sl != null
) + { + return
sl.contains( project
); + } + } + else + { + if
( project.equals( getExecFile().getProject() )
) + return
true; + return CDebugUtils.isReferencedProject(
getExecFile().getProject(), project
); + } + } + return
false; } protected void
initializeRegisters()
|