1
0
Fork 0
mirror of https://github.com/eclipse-cdt/cdt synced 2025-04-29 19:45:01 +02:00

Merge remote-tracking branch 'cdt/master' into sd90

This commit is contained in:
Andrew Gvozdev 2012-09-04 22:45:37 -04:00
commit e7468a6b26
16 changed files with 152 additions and 208 deletions

View file

@ -1,3 +1,9 @@
2012-08-29 Jeff Johnston <jjohnstn@redhat.com>
Resolves: bug #381291
* plugin.xml: Add other types of binary parsers for Autotools target since it can apply to
non-ELF OSes.
2012-08-29 Jeff Johnston <jjohnstn@redhat.com> 2012-08-29 Jeff Johnston <jjohnstn@redhat.com>
Resolves: bug #388354 Resolves: bug #388354

View file

@ -379,7 +379,7 @@
</tool> </tool>
<targetPlatform <targetPlatform
archList="all" archList="all"
binaryParser="org.eclipse.cdt.core.ELF;org.eclipse.cdt.core.GNU_ELF" binaryParser="org.eclipse.cdt.core.ELF;org.eclipse.cdt.core.GNU_ELF;org.eclipse.cdt.core.MachO64;org.eclipse.cdt.core.PE;org.eclipse.cdt.core.Cygwin_PE"
id="org.eclipse.linuxtools.cdt.autotools.core.targetPlatform" id="org.eclipse.linuxtools.cdt.autotools.core.targetPlatform"
isAbstract="false" isAbstract="false"
name="%Autotools.targetplatform.name"/> name="%Autotools.targetplatform.name"/>

View file

@ -1,13 +1,13 @@
/******************************************************************************* ################################################################################
* Copyright (c) 2009, 2011 Red Hat, Inc. # Copyright (c) 2009, 2011, 2012 Red Hat, Inc.
* All rights reserved. This program and the accompanying materials # All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0 # are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at # which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html # http://www.eclipse.org/legal/epl-v10.html
* #
* Contributors: # Contributors:
* Red Hat Incorporated - initial API and implementation # Red Hat Incorporated - initial API and implementation
*******************************************************************************/ ################################################################################
Option.configure.configure=configure Option.configure.configure=configure
Option.configure.general=General Option.configure.general=General
Option.configure.builddir=Build directory Option.configure.builddir=Build directory

View file

@ -1,4 +1,5 @@
<?xml version='1.0' encoding='utf-8' ?> <?xml version='1.0' encoding='utf-8' ?>
<?NLS TYPE="org.eclipse.help.toc"?>
<toc topic="CDT/Autotools/User_Guide/User-Guide.html" label="Autotools Plug-in User Guide"> <toc topic="CDT/Autotools/User_Guide/User-Guide.html" label="Autotools Plug-in User Guide">
<topic href="CDT/Autotools/User_Guide/User-Guide.html" label="Autotools Plug-in User Guide"> <topic href="CDT/Autotools/User_Guide/User-Guide.html" label="Autotools Plug-in User Guide">
<topic href="CDT/Autotools/User_Guide/User-Guide.html" label="Introduction"></topic> <topic href="CDT/Autotools/User_Guide/User-Guide.html" label="Introduction"></topic>

View file

@ -1,5 +1,5 @@
################################################################################# #################################################################################
# Copyright (c) 2006, 2008, 2009 Red Hat, Inc. # Copyright (c) 2006, 2008, 2009, 2012 Red Hat, Inc.
# All rights reserved. This program and the accompanying materials # All rights reserved. This program and the accompanying materials
# are made available under the terms of the Eclipse Public License v1.0 # are made available under the terms of the Eclipse Public License v1.0
# which accompanies this distribution, and is available at # which accompanies this distribution, and is available at
@ -60,85 +60,6 @@ ShowTooltip.description=Shows the tooltip description for the element at the cur
ACeditor.scope.name=Autoconf Editor ACeditor.scope.name=Autoconf Editor
ACeditor.scope.description=Editor for Autoconf Configuration Source Files ACeditor.scope.description=Editor for Autoconf Configuration Source Files
Tool.configure=configure
OptionCategory.configure.general=General
Option.configure.name=Name
Option.configure.builddir=Build directory
Option.configure.builddir.tip=Subdirectory off of project where build will occur
Option.configure.configdir=Configure tool directory
Option.configure.configdir.tip=Subdirectory off of project containing configure scripts
Option.configure.cache_file=Name of configuration cache file (--cache-file)
Option.configure.cache_file.tip=Specify the name of the configuration cache file [config.cache]
Option.configure.no_create=Turn off file creation <not advised> (--no-create)
Option.configure.no_create.tip=This tells configuration not to generate the output files as part of configuration
Option.configure.quiet=Turn off checking messages (--quiet)
Option.configure.quiet.tip=This turns off "checking ..." style messages from the configuration console output
Option.configure.help=Display help contents of top-level configuration (--help)
Option.configure.help.tip=Ask configuration file to display its help documentation
Option.configure.version=Display version of autotools used to create configuration (--version)
Option.configure.version.tip=This outputs the version of the Autotools used to create the configuration files
OptionCategory.configure.platform=Platform Specifiers
Option.configure.host=Host platform (--host)
Option.configure.host.tip=Platform that project will run on
Option.configure.target=Target platform (--target)
Option.configure.target.tip=Platform that project will target output for
Option.configure.build=Build platform (--build)
Option.configure.build.tip=Platform where project is being built
OptionCategory.configure.directories=Directory specifiers
Option.configure.prefix=Arch-independent install directory (--prefix)
Option.configure.prefix.tip=Place where architecture-independent files are installed [/usr/local]
Option.configure.exec_prefix=Arch-dependent install directory (--exec-prefix)
Option.configure.exec_prefix.tip=Place where architecture-dependent files are installed [PREFIX]
Option.configure.libdir=Object code library directory (--libdir)
Option.configure.libdir.tip=Place where object code libraries are installed [EPREFIX/lib]
Option.configure.bindir=User executable directory (--bindir)
Option.configure.bindir.tip=Place where binary executables are installed [EPREFIX/bin]
Option.configure.sbindir=System admin executable directory (--sbindir)
Option.configure.sbindir.tip=Place where system admin executables are installed [EPREFIX/sbin]
Option.configure.includedir=C Header file directory (--includdir)
Option.configure.includedir.tip=Place where header files will be installed [PREFIX/include]
Option.configure.datadir=Read-only architecture-independent data (--datadir)
Option.configure.datadir.tip=Place where read-only architecture-independent data is installed [PREFIX/share]
Option.configure.sysconfdir=Read-only single-machine data directory (--syconfdir)
Option.configure.sysconfdir.tip=Place where read-only single-machine data is stored [PREFIX/etc]
Option.configure.infodir=Info file documentation directory (--infodir)
Option.configure.infodir.tip=Place where info files are installed [PREFIX/info]
Option.configure.mandir=Man file documentation directory (--mandir)
Option.configure.mandir.tip=Place where man file documentation is installed [PREFIX/man]
Option.configure.srcdir=Sources directory (--srcdir)
Option.configure.srcdir.tip=Place where configure can find sources [configure directory or ..]
Option.configure.localstatedir=Modifiable single-machine data directory (--localstatedir)
Option.configure.localstatedir.tip=Place where modifiable single-machine data is installed [PREFIX/var]
Option.configure.sharedstatedir=Modifiable architecture-independent data directory (--sharedstatedir)
Option.configure.sharedstatedir.tip=Place where modifiable architecture-independent data is installed [PREFIX/com]
Option.configure.libexecdir=Program executable directory (--libexecdir)
Option.configure.libexecdir=Place where program executables will be installed [EPREFIX/libexec]
Option.configure.oldincludedir=Non-gcc C header file directory (--oldincludedir)
Option.configure.oldincludedir.tip=Place where non-gcc C header files are installed [/usr/include]
OptionCategory.configure.filenames=File-name transformations
Option.configure.program_prefix=Installed program prefix (--program-prefix)
Option.configure.program_prefix.tip=Prepend PREFIX to the beginning of installed program names
Option.configure.program_suffix=Installed program suffix (--program-suffix)
Option.configure.program_suffix.tip=Append SUFFIX to the end of installed program names
Option.configure.program_transform_name=Installed program name transform (--program-transform-name)
Option.configure.program_transform_name.tip=A sed string used to transform installed program names
OptionCategory.configure.features=Features and packages
Option.configure.enable_maintainer_mode=Enable maintainer mode (--enable-maintainer-mode)
Option.configure.enable_maintainer_mode.tip=Specify this to have Makefiles generated with checks for Autotool configuration file changes
Option.configure.user=User-specified configuration options
Option.configure.user.tip=Specify one or more configuration options (e.g. --enable-FEATURE, --disable-FEATURE, or --with-PACKAGE)
Tool.autogen = autogen.sh
OptionCategory.autogen.general=Options
Option.autogen.user=Command line options
Option.autogen.user.tip=Specify options to pass to the top-level autogen.sh script
RedHatVendor.name = Red Hat RedHatVendor.name = Red Hat
Bundle-Name.0 = Autotools UI Plug-in Bundle-Name.0 = Autotools UI Plug-in
provider=Eclipse CDT provider=Eclipse CDT

View file

@ -74,6 +74,7 @@ public abstract class AbstractIndexerTask extends PDOMWriter {
public static enum UnusedHeaderStrategy { skip, useC, useCPP, useDefaultLanguage, useBoth } public static enum UnusedHeaderStrategy { skip, useC, useCPP, useDefaultLanguage, useBoth }
private static final int MAX_ERRORS = 500; private static final int MAX_ERRORS = 500;
// Order of constants is important. Stronger update types have to precede the weaker ones.
private static enum UpdateKind { REQUIRED_SOURCE, REQUIRED_HEADER, ONE_LINKAGE_HEADER, OTHER_HEADER } private static enum UpdateKind { REQUIRED_SOURCE, REQUIRED_HEADER, ONE_LINKAGE_HEADER, OTHER_HEADER }
private static class LinkageTask { private static class LinkageTask {
@ -119,7 +120,8 @@ public abstract class AbstractIndexerTask extends PDOMWriter {
boolean requestUpdate(IIndexFragmentFile ifile, Object tu, UpdateKind kind) { boolean requestUpdate(IIndexFragmentFile ifile, Object tu, UpdateKind kind) {
if (tu != null) if (tu != null)
fTu= tu; fTu= tu;
if (kind != null) // Change fKind only if it becomes stronger as a result.
if (fKind == null || (kind != null && kind.compareTo(fKind) < 0))
fKind= kind; fKind= kind;
if (ifile == null) { if (ifile == null) {
@ -638,7 +640,7 @@ public abstract class AbstractIndexerTask extends PDOMWriter {
for (IIndexFragmentFile ifile : indexFiles) { for (IIndexFragmentFile ifile : indexFiles) {
if (ifile != null) { if (ifile != null) {
IIndexInclude ctx= ifile.getParsedInContext(); IIndexInclude ctx= ifile.getParsedInContext();
if (ctx == null && !indexedUnconditionally) { if (ctx == null && !indexedUnconditionally && ifile.hasContent()) {
iFilesToRemove.add(ifile); iFilesToRemove.add(ifile);
count++; count++;
} else { } else {
@ -899,7 +901,7 @@ public abstract class AbstractIndexerTask extends PDOMWriter {
final IIndexFragmentFile headerFile = versionTask.fIndexFile; final IIndexFragmentFile headerFile = versionTask.fIndexFile;
final int safeguardSize= safeGuard.size(); final int safeguardSize= safeGuard.size();
for(;;) { while (true) {
// Look for a context and parse the file // Look for a context and parse the file
IIndexFragmentFile ctxFile = findContextFile(linkageID, map, versionTask, safeGuard, monitor); IIndexFragmentFile ctxFile = findContextFile(linkageID, map, versionTask, safeGuard, monitor);
if (ctxFile == null || ctxFile == headerFile) if (ctxFile == null || ctxFile == headerFile)
@ -951,7 +953,7 @@ public abstract class AbstractIndexerTask extends PDOMWriter {
final FileVersionTask versionTask, LinkedHashSet<IIndexFile> safeGuard, IProgressMonitor monitor) final FileVersionTask versionTask, LinkedHashSet<IIndexFile> safeGuard, IProgressMonitor monitor)
throws CoreException, InterruptedException { throws CoreException, InterruptedException {
IIndexFragmentFile ctxFile= versionTask.fIndexFile; IIndexFragmentFile ctxFile= versionTask.fIndexFile;
for(;;) { while (true) {
IIndexInclude ctxInclude= ctxFile.getParsedInContext(); IIndexInclude ctxInclude= ctxFile.getParsedInContext();
if (ctxInclude == null) if (ctxInclude == null)
return ctxFile; return ctxFile;
@ -960,7 +962,7 @@ public abstract class AbstractIndexerTask extends PDOMWriter {
if (nextCtx == null) if (nextCtx == null)
return nextCtx; return nextCtx;
// Found a recursion // Found a recursion.
if (!safeGuard.add(nextCtx)) if (!safeGuard.add(nextCtx))
return null; return null;
@ -984,7 +986,6 @@ public abstract class AbstractIndexerTask extends PDOMWriter {
} }
} }
private DependsOnOutdatedFileException parseFile(Object tu, AbstractLanguage lang, private DependsOnOutdatedFileException parseFile(Object tu, AbstractLanguage lang,
IIndexFileLocation ifl, IScannerInfo scanInfo, FileContext ctx, IProgressMonitor pm) IIndexFileLocation ifl, IScannerInfo scanInfo, FileContext ctx, IProgressMonitor pm)
throws CoreException, InterruptedException { throws CoreException, InterruptedException {

View file

@ -38,7 +38,7 @@ public class PDOMSetupJob extends Job {
@Override @Override
protected IStatus run(IProgressMonitor monitor) { protected IStatus run(IProgressMonitor monitor) {
monitor.beginTask("", IProgressMonitor.UNKNOWN); //$NON-NLS-1$ monitor.beginTask("", IProgressMonitor.UNKNOWN); //$NON-NLS-1$
while(true) { while (true) {
ICProject cproject= fManager.getNextProject(); ICProject cproject= fManager.getNextProject();
if (cproject == null) if (cproject == null)
return Status.OK_STATUS; return Status.OK_STATUS;

View file

@ -221,17 +221,16 @@ abstract public class PDOMWriter {
data.fSymbolMap.put(file.includeStatement, new Symbols()); data.fSymbolMap.put(file.includeStatement, new Symbols());
} }
// Extract symbols from AST.
// Extract symbols from AST
extractSymbols(data); extractSymbols(data);
// Name resolution // Name resolution.
resolveNames(data, pm); resolveNames(data, pm);
// Index update // Index update.
storeSymbolsInIndex(data, ctx, flushIndex, pm); storeSymbolsInIndex(data, ctx, flushIndex, pm);
// Tasks update // Tasks update.
if (taskUpdater != null) { if (taskUpdater != null) {
Set<IIndexFileLocation> locations= new HashSet<IIndexFileLocation>(); Set<IIndexFileLocation> locations= new HashSet<IIndexFileLocation>();
for (FileInAST file : selectedFiles) { for (FileInAST file : selectedFiles) {

View file

@ -200,6 +200,7 @@ import org.eclipse.cdt.ui.text.folding.ICFoldingStructureProvider;
import org.eclipse.cdt.internal.core.model.ASTCache.ASTRunnable; import org.eclipse.cdt.internal.core.model.ASTCache.ASTRunnable;
import org.eclipse.cdt.internal.core.pdom.indexer.IndexerPreferences; import org.eclipse.cdt.internal.core.pdom.indexer.IndexerPreferences;
import org.eclipse.cdt.internal.corext.util.CModelUtil;
import org.eclipse.cdt.internal.corext.util.CodeFormatterUtil; import org.eclipse.cdt.internal.corext.util.CodeFormatterUtil;
import org.eclipse.cdt.internal.ui.CPluginImages; import org.eclipse.cdt.internal.ui.CPluginImages;
@ -1286,11 +1287,11 @@ public class CEditor extends TextEditor implements ICEditor, ISelectionChangedLi
try { try {
IIndexManager indexManager = CCorePlugin.getIndexManager(); IIndexManager indexManager = CCorePlugin.getIndexManager();
if (tuToReset != null) { if (tuToReset != null) {
indexManager.update(new ICElement[] { tuToReset }, indexManager.update(new ICElement[] { CModelUtil.toOriginal(tuToReset) },
IIndexManager.RESET_INDEX_INCLUSION | IIndexManager.UPDATE_CHECK_TIMESTAMPS); IIndexManager.RESET_INDEX_INCLUSION | IIndexManager.UPDATE_CHECK_TIMESTAMPS);
} }
if (tuToAdd != null) { if (tuToAdd != null) {
indexManager.update(new ICElement[] { tuToAdd }, indexManager.update(new ICElement[] { CModelUtil.toOriginal(tuToAdd) },
IIndexManager.FORCE_INDEX_INCLUSION | IIndexManager.UPDATE_CHECK_TIMESTAMPS); IIndexManager.FORCE_INDEX_INCLUSION | IIndexManager.UPDATE_CHECK_TIMESTAMPS);
} }
} catch (CoreException e) { } catch (CoreException e) {

View file

@ -12,7 +12,6 @@ package org.eclipse.cdt.debug.ui.breakpointactions;
import java.io.ByteArrayOutputStream; import java.io.ByteArrayOutputStream;
import java.io.StringReader; import java.io.StringReader;
import com.ibm.icu.text.MessageFormat;
import javax.xml.parsers.DocumentBuilder; import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory; import javax.xml.parsers.DocumentBuilderFactory;
@ -31,22 +30,46 @@ import org.eclipse.core.runtime.IProgressMonitor;
import org.eclipse.core.runtime.IStatus; import org.eclipse.core.runtime.IStatus;
import org.eclipse.core.runtime.MultiStatus; import org.eclipse.core.runtime.MultiStatus;
import org.eclipse.core.runtime.Status; import org.eclipse.core.runtime.Status;
import org.eclipse.core.runtime.jobs.Job;
import org.eclipse.debug.core.DebugPlugin; import org.eclipse.debug.core.DebugPlugin;
import org.eclipse.debug.core.ILaunchConfiguration; import org.eclipse.debug.core.ILaunchConfiguration;
import org.eclipse.debug.core.ILaunchManager; import org.eclipse.debug.core.ILaunchManager;
import org.eclipse.debug.core.model.IBreakpoint; import org.eclipse.debug.core.model.IBreakpoint;
import org.eclipse.debug.ui.DebugUITools; import org.eclipse.debug.ui.DebugUITools;
import org.eclipse.ui.progress.WorkbenchJob;
import org.w3c.dom.Document; import org.w3c.dom.Document;
import org.w3c.dom.Element; import org.w3c.dom.Element;
import org.xml.sax.InputSource; import org.xml.sax.InputSource;
import org.xml.sax.helpers.DefaultHandler; import org.xml.sax.helpers.DefaultHandler;
import com.ibm.icu.text.MessageFormat;
public class ExternalToolAction extends AbstractBreakpointAction { public class ExternalToolAction extends AbstractBreakpointAction {
private String externalToolName = ""; //$NON-NLS-1$ private String externalToolName = ""; //$NON-NLS-1$
@Override @Override
public IStatus execute(IBreakpoint breakpoint, IAdaptable context, IProgressMonitor monitor) { public IStatus execute(final IBreakpoint breakpoint, final IAdaptable context, final IProgressMonitor monitor) {
Job uiJob = new WorkbenchJob("ExternalToolAction") { //$NON-NLS-1$
{
setPriority(INTERACTIVE);
}
@Override
public IStatus runInUIThread(IProgressMonitor monitor) {
return executeInUIThread(breakpoint, context, monitor);
}
};
uiJob.schedule();
try {
uiJob.join();
} catch (InterruptedException e) {
return Status.CANCEL_STATUS;
}
return uiJob.getResult();
}
private IStatus executeInUIThread(IBreakpoint breakpoint, IAdaptable context, IProgressMonitor monitor) {
IStatus errorStatus = null; IStatus errorStatus = null;
ILaunchManager lcm = DebugPlugin.getDefault().getLaunchManager(); ILaunchManager lcm = DebugPlugin.getDefault().getLaunchManager();
try { try {

View file

@ -50,7 +50,7 @@ public abstract class AbstractBreakpointVMNode extends AbstractVMNode {
/** /**
* Class that creates the element object for the corresponding breakpoints. * Class that creates the element object for the corresponding breakpoints.
* This element object will be populated in the breakpoitns view to represent * This element object will be populated in the breakpoints view to represent
* the given breakpoint. * the given breakpoint.
*/ */
abstract protected Object createBreakpiontElement(IBreakpoint bp); abstract protected Object createBreakpiontElement(IBreakpoint bp);

View file

@ -31,7 +31,7 @@ import org.eclipse.swt.graphics.RGB;
import org.eclipse.ui.IMemento; import org.eclipse.ui.IMemento;
/** /**
* Breakpiont VM Node which uses VM Contexts to populate breakpoint elements * Breakpoint VM Node which uses VM Contexts to populate breakpoint elements
* in the view. Any actions or other selection listeners which depend on the * in the view. Any actions or other selection listeners which depend on the
* breakpoint object will not work with these elements unless they use the * breakpoint object will not work with these elements unless they use the
* adapter mechanism to obtain the breakpoints. * adapter mechanism to obtain the breakpoints.

View file

@ -24,7 +24,6 @@ import org.eclipse.cdt.dsf.concurrent.RequestMonitor;
import org.eclipse.cdt.dsf.datamodel.DMContexts; import org.eclipse.cdt.dsf.datamodel.DMContexts;
import org.eclipse.cdt.dsf.datamodel.IDMContext; import org.eclipse.cdt.dsf.datamodel.IDMContext;
import org.eclipse.cdt.dsf.debug.service.IBreakpoints.IBreakpointsTargetDMContext; import org.eclipse.cdt.dsf.debug.service.IBreakpoints.IBreakpointsTargetDMContext;
import org.eclipse.cdt.dsf.debug.ui.viewmodel.expression.IExpressionVMNode;
import org.eclipse.cdt.dsf.internal.ui.DsfUIPlugin; import org.eclipse.cdt.dsf.internal.ui.DsfUIPlugin;
import org.eclipse.cdt.dsf.ui.viewmodel.AbstractVMAdapter; import org.eclipse.cdt.dsf.ui.viewmodel.AbstractVMAdapter;
import org.eclipse.cdt.dsf.ui.viewmodel.AbstractVMProvider; import org.eclipse.cdt.dsf.ui.viewmodel.AbstractVMProvider;
@ -58,15 +57,8 @@ import org.eclipse.jface.viewers.TreePath;
import org.eclipse.ui.IWorkbenchWindow; import org.eclipse.ui.IWorkbenchWindow;
/** /**
* The expression provider is used to populate the contents of the expressions * The breakpoint provider is used to populate the contents of the breakpoints
* view. The node hierarchy in this view is a little different than in a typical * view.
* provider: the expression manager node should be registered as the single child
* of the root node and no nodes should be registered as children of expression node.
* Instead the top level expression nodes should be registered with a call to
* {@link #setExpressionNodes(IExpressionVMNode[])}. And each expression node can
* have its own sub-hierarchy of elements as needed. However all nodes configured
* with this provider (with the exception of the root and the expression manager)
* should implement {@link IExpressionVMNode}.
* *
* @since 2.1 * @since 2.1
*/ */

View file

@ -98,7 +98,7 @@ abstract class DataCache<V> {
} }
/** /**
* Request data from the cache. The cache is valid, it will complete the * Request data from the cache. If the cache is valid, it will complete the
* request immediately, otherwise data will first be retrieved from the * request immediately, otherwise data will first be retrieved from the
* source. * source.
* @param req * @param req

View file

@ -13,7 +13,7 @@ package org.eclipse.cdt.dsf.debug.ui.viewmodel.breakpoints;
import org.eclipse.debug.core.model.IBreakpoint; import org.eclipse.debug.core.model.IBreakpoint;
/** /**
* Breakpoint node which uses raw breakpiont objects (without a wrapper) as * Breakpoint node which uses raw breakpoint objects (without a wrapper) as
* elements which are populated into the view. The breakpoint objects are * elements which are populated into the view. The breakpoint objects are
* responsible for supplying their own label and memento providers, as well * responsible for supplying their own label and memento providers, as well
* as content provider for any children. * as content provider for any children.

View file

@ -34,7 +34,7 @@ public interface IBreakpointsExtension extends IBreakpoints {
} }
/** /**
* If a given execution context was suspended due hitting a breakpoint, * If a given execution context was suspended due to hitting a breakpoint,
* this method should return the breakpoints which caused the thread or * this method should return the breakpoints which caused the thread or
* container to suspend. * container to suspend.
* <p> * <p>