Skip to main content

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [List Home]
[cdt-patch] Filter out breakpoints set in unrelated projects

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()

Back to the top