1
0
Fork 0
mirror of https://github.com/eclipse-cdt/cdt synced 2025-08-14 11:45:38 +02:00

Implementation of error handling.

This commit is contained in:
Mikhail Khodjaiants 2002-09-25 15:14:03 +00:00
parent 3766b7446a
commit eb7350b546
7 changed files with 199 additions and 4 deletions

View file

@ -9,9 +9,11 @@ package org.eclipse.cdt.debug.core;
import java.util.HashMap; import java.util.HashMap;
import org.eclipse.cdt.debug.core.cdi.CDIException; import org.eclipse.cdt.debug.core.cdi.CDIException;
import org.eclipse.cdt.debug.core.cdi.ICDIConfiguration;
import org.eclipse.cdt.debug.core.cdi.ICDILocation; import org.eclipse.cdt.debug.core.cdi.ICDILocation;
import org.eclipse.cdt.debug.core.cdi.model.ICDIExpression; import org.eclipse.cdt.debug.core.cdi.model.ICDIExpression;
import org.eclipse.cdt.debug.core.cdi.model.ICDITarget; import org.eclipse.cdt.debug.core.cdi.model.ICDITarget;
import org.eclipse.cdt.debug.internal.core.CDebugUtils;
import org.eclipse.cdt.debug.internal.core.breakpoints.CLineBreakpoint; import org.eclipse.cdt.debug.internal.core.breakpoints.CLineBreakpoint;
import org.eclipse.cdt.debug.internal.core.breakpoints.CWatchpoint; import org.eclipse.cdt.debug.internal.core.breakpoints.CWatchpoint;
import org.eclipse.cdt.debug.internal.core.model.CDebugTarget; import org.eclipse.cdt.debug.internal.core.model.CDebugTarget;
@ -113,14 +115,28 @@ public class CDebugModel
catch( CoreException e ) catch( CoreException e )
{ {
CDebugCorePlugin.log( e ); CDebugCorePlugin.log( e );
// throw DebugException
} }
if ( stopInMain ) ICDIConfiguration config = cdiTarget.getSession().getConfiguration();
if ( config.supportsBreakpoints() && stopInMain )
{ {
ICDILocation location = cdiTarget.getSession().getBreakpointManager().createLocation( "", "main", 0 ); ICDILocation location = cdiTarget.getSession().getBreakpointManager().createLocation( "", "main", 0 );
((CDebugTarget)target[0]).setInternalTemporaryBreakpoint( location ); try
{
((CDebugTarget)target[0]).setInternalTemporaryBreakpoint( location );
}
catch( DebugException e )
{
CDebugUtils.confirm( e.getStatus(), e );
}
}
if ( config.supportsResume() )
{
target[0].resume();
} }
target[0].resume();
return target[0]; return target[0];
} }

View file

@ -0,0 +1,67 @@
/*
*(c) Copyright QNX Software Systems Ltd. 2002.
* All Rights Reserved.
*
*/
package org.eclipse.cdt.debug.internal.core;
import org.eclipse.core.runtime.CoreException;
import org.eclipse.core.runtime.IStatus;
import org.eclipse.debug.core.DebugPlugin;
import org.eclipse.debug.core.IStatusHandler;
/**
*
* Enter type comment.
*
* @since Sep 25, 2002
*/
public class CDebugUtils
{
public static boolean confirm( IStatus status, Object source )
{
Boolean result = new Boolean( false );
IStatusHandler handler = DebugPlugin.getDefault().getStatusHandler( status );
if ( handler != null )
{
try
{
result = (Boolean)handler.handleStatus( status, source );
}
catch( CoreException e )
{
}
}
return result.booleanValue();
}
public static void info( IStatus status, Object source )
{
IStatusHandler handler = DebugPlugin.getDefault().getStatusHandler( status );
if ( handler != null )
{
try
{
handler.handleStatus( status, source );
}
catch( CoreException e )
{
}
}
}
public static void error( IStatus status, Object source )
{
IStatusHandler handler = DebugPlugin.getDefault().getStatusHandler( status );
if ( handler != null )
{
try
{
handler.handleStatus( status, source );
}
catch( CoreException e )
{
}
}
}
}

View file

@ -333,5 +333,26 @@
id="org.eclipse.cdt.debug.ui.cSourceLocator"> id="org.eclipse.cdt.debug.ui.cSourceLocator">
</sourceLocator> </sourceLocator>
</extension> </extension>
<extension
point="org.eclipse.debug.core.statusHandlers">
<statusHandler
code="10000"
plugin="org.eclipse.cdt.debug.core"
class="org.eclipse.cdt.debug.internal.ui.ConfirmStatusHandler"
id="org.eclipse.cdt.debug.internal.ui.ConfirmStatusHandler">
</statusHandler>
<statusHandler
code="10001"
plugin="org.eclipse.cdt.debug.core"
class="org.eclipse.cdt.debug.internal.ui.InfoStatusHandler"
id="org.eclipse.cdt.debug.internal.ui.InfoStatusHandler">
</statusHandler>
<statusHandler
code="10002"
plugin="org.eclipse.cdt.debug.core"
class="org.eclipse.cdt.debug.internal.ui.ErrorStatusHandler"
id="org.eclipse.cdt.debug.internal.ui.ErrorStatusHandler">
</statusHandler>
</extension>
</plugin> </plugin>

View file

@ -0,0 +1,28 @@
/*
*(c) Copyright QNX Software Systems Ltd. 2002.
* All Rights Reserved.
*
*/
package org.eclipse.cdt.debug.internal.ui;
import org.eclipse.core.runtime.CoreException;
import org.eclipse.core.runtime.IStatus;
import org.eclipse.debug.core.IStatusHandler;
/**
*
* Enter type comment.
*
* @since Sep 25, 2002
*/
public class ConfirmStatusHandler implements IStatusHandler
{
/* (non-Javadoc)
* @see org.eclipse.debug.core.IStatusHandler#handleStatus(IStatus, Object)
*/
public Object handleStatus( IStatus status, Object source ) throws CoreException
{
return null;
}
}

View file

@ -0,0 +1,28 @@
/*
*(c) Copyright QNX Software Systems Ltd. 2002.
* All Rights Reserved.
*
*/
package org.eclipse.cdt.debug.internal.ui;
import org.eclipse.core.runtime.CoreException;
import org.eclipse.core.runtime.IStatus;
import org.eclipse.debug.core.IStatusHandler;
/**
*
* Enter type comment.
*
* @since Sep 25, 2002
*/
public class ErrorStatusHandler implements IStatusHandler
{
/* (non-Javadoc)
* @see org.eclipse.debug.core.IStatusHandler#handleStatus(IStatus, Object)
*/
public Object handleStatus( IStatus status, Object source ) throws CoreException
{
return null;
}
}

View file

@ -14,6 +14,13 @@ package org.eclipse.cdt.debug.internal.ui;
*/ */
public interface ICDebugUIInternalConstants public interface ICDebugUIInternalConstants
{ {
/*
* Status handler codes.
*/
public static final int STATUS_CODE_CONFIRM = 10000;
public static final int STATUS_CODE_INFO = 10001;
public static final int STATUS_CODE_ERROR = 10002;
/* /*
* Memory view constants. * Memory view constants.
*/ */

View file

@ -0,0 +1,28 @@
/*
*(c) Copyright QNX Software Systems Ltd. 2002.
* All Rights Reserved.
*
*/
package org.eclipse.cdt.debug.internal.ui;
import org.eclipse.core.runtime.CoreException;
import org.eclipse.core.runtime.IStatus;
import org.eclipse.debug.core.IStatusHandler;
/**
*
* Enter type comment.
*
* @since Sep 25, 2002
*/
public class InfoStatusHandler implements IStatusHandler
{
/* (non-Javadoc)
* @see org.eclipse.debug.core.IStatusHandler#handleStatus(IStatus, Object)
*/
public Object handleStatus( IStatus status, Object source ) throws CoreException
{
return null;
}
}