diff options
author | Marc Khouzam | 2014-09-17 20:12:58 +0000 |
---|---|---|
committer | Marc Khouzam | 2014-09-22 14:11:35 +0000 |
commit | 8d56765e6b4a42080983a7541559bfee0825d4c2 (patch) | |
tree | 325d472dd83af7e4f1efb1988701b2db3fd85d7c /dsf-gdb/org.eclipse.cdt.dsf.gdb/src | |
parent | b92677b1496dec2950cc8c3371cff7e522001089 (diff) | |
download | org.eclipse.cdt-8d56765e6b4a42080983a7541559bfee0825d4c2.tar.gz org.eclipse.cdt-8d56765e6b4a42080983a7541559bfee0825d4c2.tar.xz org.eclipse.cdt-8d56765e6b4a42080983a7541559bfee0825d4c2.zip |
Bug 444395 - Breakpoints don't get set for second session.
Change-Id: Ifa857cc2e9de00bb2f2a86b9d5e73536294dd01d
Signed-off-by: Marc Khouzam <marc.khouzam@ericsson.com>
Reviewed-on: https://git.eclipse.org/r/33517
Reviewed-on: https://git.eclipse.org/r/33573
Diffstat (limited to 'dsf-gdb/org.eclipse.cdt.dsf.gdb/src')
-rw-r--r-- | dsf-gdb/org.eclipse.cdt.dsf.gdb/src/org/eclipse/cdt/dsf/mi/service/MIBreakpointsManager.java | 19 |
1 files changed, 11 insertions, 8 deletions
diff --git a/dsf-gdb/org.eclipse.cdt.dsf.gdb/src/org/eclipse/cdt/dsf/mi/service/MIBreakpointsManager.java b/dsf-gdb/org.eclipse.cdt.dsf.gdb/src/org/eclipse/cdt/dsf/mi/service/MIBreakpointsManager.java index 1641bf1b904..059841aba77 100644 --- a/dsf-gdb/org.eclipse.cdt.dsf.gdb/src/org/eclipse/cdt/dsf/mi/service/MIBreakpointsManager.java +++ b/dsf-gdb/org.eclipse.cdt.dsf.gdb/src/org/eclipse/cdt/dsf/mi/service/MIBreakpointsManager.java @@ -1876,18 +1876,15 @@ public class MIBreakpointsManager extends AbstractDsfService implements IBreakpo List<IExecutionDMContext[]> threads = new ArrayList<IExecutionDMContext[]>(1); try { - // Retrieve the targets + // Retrieve all existing targets. + // Note that these targets can be from different debugging sessions since + // they are associated with the platform breakpoint. IDsfBreakpointExtension filterExtension = getFilterExtension(breakpoint); IContainerDMContext[] procTargets = filterExtension.getTargetFilters(); - // If no target is present, breakpoint applies to all. - if (procTargets.length == 0) { - results.add("0"); //$NON-NLS-1$ - return results; - } - - // Extract the thread IDs (if there is none, we are covered) + // Extract the thread IDs for (IContainerDMContext procDmc : procTargets) { + // Look for a target/process that belongs to our session if (procDmc.equals(bpTargetDmc) || DMContexts.isAncestorOf(procDmc, bpTargetDmc)) { IExecutionDMContext[] threadFilters = filterExtension.getThreadFilters(procDmc); if (threadFilters == null) { @@ -1913,6 +1910,12 @@ public class MIBreakpointsManager extends AbstractDsfService implements IBreakpo results.add("0"); //$NON-NLS-1$ return results; } + + // If there are no threads to filter on, it means the bp applies to the entire process. + if (threads.isEmpty()) { + results.add("0"); //$NON-NLS-1$ + return results; + } for (IExecutionDMContext[] targetThreads : threads) { if (targetThreads != null) { |