1
0
Fork 0
mirror of https://github.com/eclipse-cdt/cdt synced 2025-04-23 22:52:11 +02:00

Use the regular breakpoints instead of temporary because of the mi problems.

This commit is contained in:
Mikhail Khodjaiants 2002-09-19 15:51:16 +00:00
parent f428107d13
commit 118c87d65c
2 changed files with 72 additions and 12 deletions

View file

@ -131,18 +131,7 @@ public class CDebugModel
if ( stopInMain )
{
ICDILocation location = cdiTarget.getSession().getBreakpointManager().createLocation( "", "main", 0 );
try
{
ICDIBreakpoint bkpt = cdiTarget.getSession().getBreakpointManager().
setLocationBreakpoint( ICDIBreakpoint.REGULAR, //ICDIBreakpoint.TEMPORARY,
location,
null,
null );
}
catch( CDIException e )
{
((CDebugElement)target[0]).targetRequestFailed( MessageFormat.format( "{0} occurred setting temporary breakpoint.", new String[] { e.toString() } ), e );
}
((CDebugTarget)target[0]).setInternalTemporaryBreakpoint( location );
}
target[0].resume();

View file

@ -185,6 +185,11 @@ public class CDebugTarget extends CDebugElement
*/
private List fRegisterGroups;
/**
* Collection of temporary breakpoints set at this target. Values are of type <code>ICBreakpoint</code>.
*/
private List fTemporaryBreakpoints;
/**
* Constructor for CDebugTarget.
* @param target
@ -204,6 +209,7 @@ public class CDebugTarget extends CDebugElement
setProcess( process );
setCDITarget( cdiTarget );
setBreakpoints( new HashMap( 5 ) );
setTemporaryBreakpoints( new ArrayList() );
setConfiguration( cdiTarget.getSession().getConfiguration() );
fSupportsTerminate = allowsTerminate & getConfiguration().supportsTerminate();
fSupportsDisconnect = allowsDisconnect & getConfiguration().supportsDisconnect();
@ -1095,6 +1101,25 @@ public class CDebugTarget extends CDebugElement
}
}
/**
* Removes all temporary breakpoints from this target.
*
*/
protected void removeAllTemporaryBreakpoints()
{
ICDIBreakpoint[] cdiBreakpoints = (ICDIBreakpoint[])getTemporaryBreakpoints().toArray( new ICDIBreakpoint[0] );
ICDIBreakpointManager bm = getCDISession().getBreakpointManager();
try
{
bm.deleteBreakpoints( cdiBreakpoints );
getTemporaryBreakpoints().clear();
}
catch( CDIException e )
{
logError( e );
}
}
protected void changeBreakpointProperties( CBreakpoint breakpoint, IMarkerDelta delta ) throws DebugException
{
ICDIBreakpoint cdiBreakpoint = findCDIBreakpoint( breakpoint );
@ -1187,6 +1212,7 @@ public class CDebugTarget extends CDebugElement
setCurrentStateId( IState.SUSPENDED );
ICDISessionObject reason = event.getReason();
setCurrentStateInfo( reason );
removeAllTemporaryBreakpoints();
List newThreads = refreshThreads();
if ( event.getSource() instanceof ICDITarget )
{
@ -1512,6 +1538,24 @@ public class CDebugTarget extends CDebugElement
return fBreakpoints;
}
/**
* Returns the list of temporary breakpoints installed in this debug target.
*
* @return list of installed temporary breakpoints
*/
protected List getTemporaryBreakpoints()
{
return fTemporaryBreakpoints;
}
/**
* Uninstalles all temporary breakpoints installed in this debug target.
*
*/
protected void deleteTemporaryBreakpoints()
{
}
/**
* Sets the map of breakpoints installed in this debug target.
*
@ -1522,6 +1566,16 @@ public class CDebugTarget extends CDebugElement
fBreakpoints = breakpoints;
}
/**
* Sets the list of temporary breakpoints installed in this debug target.
*
* @param breakpoints breakpoints list
*/
private void setTemporaryBreakpoints( List breakpoints )
{
fTemporaryBreakpoints = breakpoints;
}
/**
* Returns the debug configuration of this target.
*
@ -1716,4 +1770,21 @@ public class CDebugTarget extends CDebugElement
}
}
}
public void setInternalTemporaryBreakpoint( ICDILocation location ) throws DebugException
{
try
{
ICDIBreakpoint bkpt = getCDISession().getBreakpointManager().
setLocationBreakpoint( ICDIBreakpoint.REGULAR, //ICDIBreakpoint.TEMPORARY,
location,
null,
null );
getTemporaryBreakpoints().add( bkpt );
}
catch( CDIException e )
{
targetRequestFailed( e.getMessage(), null );
}
}
}