1
0
Fork 0
mirror of https://github.com/eclipse-cdt/cdt synced 2025-07-23 00:45:28 +02:00

2005-04-25 Alain Magloire

Changes to the CDI interface.
	+ cdi/org/eclipse/cdt/debug/core/cdi/ICDIAddressLocation.java
	+ cdi/org/eclipse/cdt/debug/core/cdi/ICDIFileLocation.java
	+ cdi/org/eclipse/cdt/debug/core/cdi/ICDIFunctionLocation.java
	+ cdi/org/eclipse/cdt/debug/core/cdi/ICDILineLocation.java
	+ cdi/org/eclipse/cdt/debug/core/cdi/ICDLocator.java
	* cdi/org/eclipse/cdt/debug/core/cdi/ICDLocation.java
	+ cdi/org/eclipse/cdt/debug/core/cdi/model/ICDIAddressBreakpoint.java
	+ cdi/org/eclipse/cdt/debug/core/cdi/model/ICDILineBreakpoint.java
	+ cdi/org/eclipse/cdt/debug/core/cdi/model/ICDIFunctionBreakpoint.java
	* cdi/org/eclipse/cdt/debug/core/cdi/model/ICDIBreapoint.java
	* cdi/org/eclipse/cdt/debug/core/cdi/model/ICDBreakpointManagement.java
	* cdi/org/eclipse/cdt/debug/core/cdi/model/ICDILocationBreakpoint.java
	* cdi/org/eclipse/cdt/debug/core/cdi/model/ICDIStackFrame.java
	* cdi/org/eclipse/cdt/debug/core/cdi/model/ICDITarget.java

	* src/org/eclipse/cdt/debug/core/CDIDebugModel.java
	* src/org/eclipse/cdt/debug/internal/core/CBreakpointManager.java
	* src/org/eclipse/cdt/debug/internal/core/model/CDebugTarget.java
	* src/org/eclipse/cdt/debug/internal/core/model/CStackFrame.java
This commit is contained in:
Alain Magloire 2005-04-25 19:11:19 +00:00
parent 0bca2b33c3
commit 838acedf59
19 changed files with 392 additions and 111 deletions

View file

@ -1,3 +1,25 @@
2005-04-25 Alain Magloire
Changes to the CDI interface.
+ cdi/org/eclipse/cdt/debug/core/cdi/ICDIAddressLocation.java
+ cdi/org/eclipse/cdt/debug/core/cdi/ICDIFileLocation.java
+ cdi/org/eclipse/cdt/debug/core/cdi/ICDIFunctionLocation.java
+ cdi/org/eclipse/cdt/debug/core/cdi/ICDILineLocation.java
+ cdi/org/eclipse/cdt/debug/core/cdi/ICDLocator.java
* cdi/org/eclipse/cdt/debug/core/cdi/ICDLocation.java
+ cdi/org/eclipse/cdt/debug/core/cdi/model/ICDIAddressBreakpoint.java
+ cdi/org/eclipse/cdt/debug/core/cdi/model/ICDILineBreakpoint.java
+ cdi/org/eclipse/cdt/debug/core/cdi/model/ICDIFunctionBreakpoint.java
* cdi/org/eclipse/cdt/debug/core/cdi/model/ICDIBreapoint.java
* cdi/org/eclipse/cdt/debug/core/cdi/model/ICDBreakpointManagement.java
* cdi/org/eclipse/cdt/debug/core/cdi/model/ICDILocationBreakpoint.java
* cdi/org/eclipse/cdt/debug/core/cdi/model/ICDIStackFrame.java
* cdi/org/eclipse/cdt/debug/core/cdi/model/ICDITarget.java
* src/org/eclipse/cdt/debug/core/CDIDebugModel.java
* src/org/eclipse/cdt/debug/internal/core/CBreakpointManager.java
* src/org/eclipse/cdt/debug/internal/core/model/CDebugTarget.java
* src/org/eclipse/cdt/debug/internal/core/model/CStackFrame.java
2005-04-21 Mikhail Khodjaiants
Restoring the session manager.
* CDebugCorePlugin.java

View file

@ -0,0 +1,30 @@
/*******************************************************************************
* Copyright (c) 2000, 2004 QNX Software Systems and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Common Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/cpl-v10.html
*
* Contributors:
* QNX Software Systems - Initial API and implementation
*******************************************************************************/
package org.eclipse.cdt.debug.core.cdi;
import java.math.BigInteger;
/**
*
* Represents a line location in the debuggable program.
*
*/
public interface ICDIAddressLocation extends ICDILocation {
/**
* Returns the address of this location.
*
* @return BigInteger - the address of this location
*/
BigInteger getAddress();
}

View file

@ -0,0 +1,24 @@
/*******************************************************************************
* Copyright (c) 2000, 2004 QNX Software Systems and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Common Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/cpl-v10.html
*
* Contributors:
* QNX Software Systems - Initial API and implementation
*******************************************************************************/
package org.eclipse.cdt.debug.core.cdi;
public interface ICDIFileLocation extends ICDILocation {
/**
* Returns the source file of this location or <code>null</code>
* if the source file is unknown.
*
* @return the source file of this location
*/
String getFile();
}

View file

@ -0,0 +1,29 @@
/*******************************************************************************
* Copyright (c) 2000, 2004 QNX Software Systems and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Common Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/cpl-v10.html
*
* Contributors:
* QNX Software Systems - Initial API and implementation
*******************************************************************************/
package org.eclipse.cdt.debug.core.cdi;
/**
*
* Represents a file:function location in the debuggable program.
*
*/
public interface ICDIFunctionLocation extends ICDIFileLocation {
/**
* Returns the function of this location or <code>null</code>
* if the function is unknown.
*
* @return the function of this location
*/
String getFunction();
}

View file

@ -0,0 +1,28 @@
/*******************************************************************************
* Copyright (c) 2000, 2004 QNX Software Systems and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Common Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/cpl-v10.html
*
* Contributors:
* QNX Software Systems - Initial API and implementation
*******************************************************************************/
package org.eclipse.cdt.debug.core.cdi;
/**
*
* Represents a file:line location in the debuggable program.
*
*/
public interface ICDILineLocation extends ICDIFileLocation {
/**
* Returns the line number of this location or <code>0</code>
* if the line number is unknown.
*
* @return the line number of this location
*/
int getLineNumber();
}

View file

@ -10,50 +10,15 @@
*******************************************************************************/
package org.eclipse.cdt.debug.core.cdi;
import java.math.BigInteger;
/**
*
* Represents a location in the debuggable program.
*
* @since Jul 9, 2002
*/
public interface ICDILocation {
/**
* Returns the address of this location.
*
* @return the address of this location
*/
BigInteger getAddress();
/**
* Returns the source file of this location or <code>null</code>
* if the source file is unknown.
*
* @return the source file of this location
*/
String getFile();
/**
* Returns the function of this location or <code>null</code>
* if the function is unknown.
*
* @return the function of this location
*/
String getFunction();
/**
* Returns the line number of this location or <code>null</code>
* if the line number is unknown.
*
* @return the line number of this location
*/
int getLineNumber();
/**
* Return true if the both location refers to the same
* place.
* Return true if both locations refer to the same place.
*/
boolean equals(ICDILocation location);

View file

@ -0,0 +1,19 @@
/*******************************************************************************
* Copyright (c) 2000, 2004 QNX Software Systems and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Common Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/cpl-v10.html
*
* Contributors:
* QNX Software Systems - Initial API and implementation
*******************************************************************************/
package org.eclipse.cdt.debug.core.cdi;
/**
* Locator contains information file:function:line:Address
*/
public interface ICDILocator extends ICDIFileLocation, ICDILineLocation, ICDIFunctionLocation, ICDIAddressLocation {
}

View file

@ -0,0 +1,21 @@
/*******************************************************************************
* Copyright (c) 2000, 2004 QNX Software Systems and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Common Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/cpl-v10.html
*
* Contributors:
* QNX Software Systems - Initial API and implementation
*******************************************************************************/
package org.eclipse.cdt.debug.core.cdi.model;
/**
*
* Represents an address breakpoint.
*
*/
public interface ICDIAddressBreakpoint extends ICDILocationBreakpoint {
}

View file

@ -21,7 +21,9 @@ import org.eclipse.cdt.debug.core.cdi.ICDICondition;
* basic functionality for the location breakpoints, watchpoints,
* and catchpoints.
*
* @see ICDILocationBreakpoint
* @see ICDILineBreakpoint
* @see ICDIFunctionBreakpoint
* @see ICDIAddressBreakpoint
* @see ICDIWatchpoint
* @see ICDICatchpoint
*
@ -62,7 +64,7 @@ public interface ICDIBreakpoint extends ICDIObject {
* @param enabled - whether this breakpoint should be enabled
* @throws CDIException if this method fails. Reasons include:
*/
void setEnabled( boolean enabled ) throws CDIException;
void setEnabled(boolean enabled) throws CDIException;
/**
* Returns the condition of this breakpoint or <code>null</code>
@ -79,6 +81,6 @@ public interface ICDIBreakpoint extends ICDIObject {
* @param the condition to set
* @throws CDIException if this method fails. Reasons include:
*/
void setCondition( ICDICondition condition ) throws CDIException;
void setCondition(ICDICondition condition) throws CDIException;
}

View file

@ -12,27 +12,100 @@
package org.eclipse.cdt.debug.core.cdi.model;
import org.eclipse.cdt.debug.core.cdi.CDIException;
import org.eclipse.cdt.debug.core.cdi.ICDIAddressLocation;
import org.eclipse.cdt.debug.core.cdi.ICDICondition;
import org.eclipse.cdt.debug.core.cdi.ICDILocation;
import org.eclipse.cdt.debug.core.cdi.ICDIFunctionLocation;
import org.eclipse.cdt.debug.core.cdi.ICDILineLocation;
/**
* Breapoints action on the Target.
*
*/
public interface ICDIBreakpointManagement {
ICDIBreakpoint[] getBreakpoints() throws CDIException;
ICDILocationBreakpoint setLocationBreakpoint(int type, ICDILocation location,
/**
* Set a line breakpoint.
*
* @param type
* @param location
* @param condition
* @param deferred
* @return
* @throws CDIException
*/
ICDILineBreakpoint setLineBreakpoint(int type, ICDILineLocation location,
ICDICondition condition, boolean deferred) throws CDIException;
/**
* Set a function breakpoint.
*
* @param type
* @param location
* @param condition
* @param deferred
* @return
* @throws CDIException
*/
ICDIFunctionBreakpoint setFunctionBreakpoint(int type, ICDIFunctionLocation location,
ICDICondition condition, boolean deferred) throws CDIException;
/**
* Set an address Breakpoint
*
* @param type
* @param location
* @param condition
* @param deferred
* @return
* @throws CDIException
*/
ICDIAddressBreakpoint setAddressBreakpoint(int type, ICDIAddressLocation location,
ICDICondition condition, boolean deferred) throws CDIException;
/**
* Set a watchpoint.
*
* @param type
* @param watchType
* @param expression
* @param condition
* @return
* @throws CDIException
*/
ICDIWatchpoint setWatchpoint(int type, int watchType, String expression,
ICDICondition condition) throws CDIException;
void deleteBreakpoints(ICDIBreakpoint[] breakpoints) throws CDIException;
void deleteAllBreakpoints() throws CDIException;
/**
* Set an exception point.
*
* @param clazz
* @param stopOnThrow
* @param stopOnCatch
* @return
* @throws CDIException
*/
ICDIExceptionpoint setExceptionBreakpoint(String clazz, boolean stopOnThrow, boolean stopOnCatch) throws CDIException;
/**
* Return all the breakpoints
*
* @return
* @throws CDIException
*/
ICDIBreakpoint[] getBreakpoints() throws CDIException;
/**
* Remove the breakpoints
* @param breakpoints
* @throws CDIException
*/
void deleteBreakpoints(ICDIBreakpoint[] breakpoints) throws CDIException;
/**
* Remove all the breakpoints
*
* @throws CDIException
*/
void deleteAllBreakpoints() throws CDIException;
}

View file

@ -0,0 +1,21 @@
/*******************************************************************************
* Copyright (c) 2000, 2004 QNX Software Systems and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Common Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/cpl-v10.html
*
* Contributors:
* QNX Software Systems - Initial API and implementation
*******************************************************************************/
package org.eclipse.cdt.debug.core.cdi.model;
/**
*
* Represents a function breakpoint.
*
*/
public interface ICDIFunctionBreakpoint extends ICDILocationBreakpoint {
}

View file

@ -0,0 +1,20 @@
/*******************************************************************************
* Copyright (c) 2000, 2004 QNX Software Systems and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Common Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/cpl-v10.html
*
* Contributors:
* QNX Software Systems - Initial API and implementation
*******************************************************************************/
package org.eclipse.cdt.debug.core.cdi.model;
/**
*
* Represents a line breakpoint.
*
*/
public interface ICDILineBreakpoint extends ICDILocationBreakpoint {
}

View file

@ -11,21 +11,18 @@
package org.eclipse.cdt.debug.core.cdi.model;
import org.eclipse.cdt.debug.core.cdi.CDIException;
import org.eclipse.cdt.debug.core.cdi.ICDILocation;
import org.eclipse.cdt.debug.core.cdi.ICDILocator;
/**
*
* Represents a line, function or address breakpoint.
* Abstract class returning location of breakpoint: file, line, function, address.
*
* @since Jul 9, 2002
*/
public interface ICDILocationBreakpoint extends ICDIBreakpoint {
/**
* Returns the location of this breakpoint.
*
* @return the location of this breakpoint
* @throws CDIException if this method fails. Reasons include:
* Returns the location of the breakpoint.
* @return ICDILocator
*/
ICDILocation getLocation() throws CDIException;
ICDILocator getLocator();
}

View file

@ -12,7 +12,7 @@
package org.eclipse.cdt.debug.core.cdi.model;
import org.eclipse.cdt.debug.core.cdi.CDIException;
import org.eclipse.cdt.debug.core.cdi.ICDILocation;
import org.eclipse.cdt.debug.core.cdi.ICDILocator;
/**
*
@ -30,7 +30,7 @@ public interface ICDIStackFrame extends ICDIExecuteStepReturn, ICDIObject {
*
* @return the location of the instruction pointer
*/
ICDILocation getLocation();
ICDILocator getLocator();
/**
* Returns the visible variables in this stack frame. An empty

View file

@ -14,7 +14,10 @@ package org.eclipse.cdt.debug.core.cdi.model;
import java.math.BigInteger;
import org.eclipse.cdt.debug.core.cdi.CDIException;
import org.eclipse.cdt.debug.core.cdi.ICDIAddressLocation;
import org.eclipse.cdt.debug.core.cdi.ICDICondition;
import org.eclipse.cdt.debug.core.cdi.ICDIFunctionLocation;
import org.eclipse.cdt.debug.core.cdi.ICDILineLocation;
import org.eclipse.cdt.debug.core.cdi.ICDILocation;
import org.eclipse.cdt.debug.core.cdi.ICDISessionObject;
@ -221,13 +224,18 @@ public interface ICDITarget extends ICDIThreadGroup, ICDIExpressionManagement,
ICDICondition createCondition(int ignoreCount, String expression, String[] threadIds);
/**
* Returns a ICDILocation
* Returns a ICDILineLocation
*/
ICDILocation createLocation(String file, String function, int line);
ICDILineLocation createLineLocation(String file, int line);
/**
* Returns a ICDILocation
* Returns a ICDIFunctionLocation
*/
ICDILocation createLocation(BigInteger address);
ICDIFunctionLocation createFunctionLocation(String file, String function);
/**
* Returns a ICDIAddressLocation
*/
ICDIAddressLocation createAddressLocation(BigInteger address);
}

View file

@ -434,7 +434,7 @@ public class CDIDebugModel {
}
protected static void stopInMain( CDebugTarget target ) throws DebugException {
ICDILocation location = target.getCDITarget().createLocation( "", "main", 0 ); //$NON-NLS-1$ //$NON-NLS-2$
ICDILocation location = target.getCDITarget().createFunctionLocation( "", "main" ); //$NON-NLS-1$ //$NON-NLS-2$
try {
target.setInternalTemporaryBreakpoint( location );
}

View file

@ -22,8 +22,12 @@ import org.eclipse.cdt.core.IAddressFactory;
import org.eclipse.cdt.debug.core.CDIDebugModel;
import org.eclipse.cdt.debug.core.CDebugUtils;
import org.eclipse.cdt.debug.core.cdi.CDIException;
import org.eclipse.cdt.debug.core.cdi.ICDIAddressLocation;
import org.eclipse.cdt.debug.core.cdi.ICDICondition;
import org.eclipse.cdt.debug.core.cdi.ICDIFunctionLocation;
import org.eclipse.cdt.debug.core.cdi.ICDILineLocation;
import org.eclipse.cdt.debug.core.cdi.ICDILocation;
import org.eclipse.cdt.debug.core.cdi.ICDILocator;
import org.eclipse.cdt.debug.core.cdi.event.ICDIChangedEvent;
import org.eclipse.cdt.debug.core.cdi.event.ICDICreatedEvent;
import org.eclipse.cdt.debug.core.cdi.event.ICDIDestroyedEvent;
@ -276,17 +280,13 @@ public class CBreakpointManager implements IBreakpointManagerListener, ICDIEvent
if ( breakpoint != null ) {
ICDIBreakpoint cdiBreakpoint = getBreakpointMap().getCDIBreakpoint( breakpoint );
if ( cdiBreakpoint instanceof ICDILocationBreakpoint ) {
try {
ICDILocation location = ((ICDILocationBreakpoint)cdiBreakpoint).getLocation();
if ( location != null ) {
IAddressFactory factory = getDebugTarget().getAddressFactory();
BigInteger address = location.getAddress();
if ( address != null )
return factory.createAddress( address );
}
}
catch( CDIException e ) {
}
ICDILocator locator = ((ICDILocationBreakpoint)cdiBreakpoint).getLocator();
if ( locator != null ) {
IAddressFactory factory = getDebugTarget().getAddressFactory();
BigInteger address = locator.getAddress();
if ( address != null )
return factory.createAddress( address );
}
}
}
return fDebugTarget.getAddressFactory().getZero();
@ -519,7 +519,17 @@ public class CBreakpointManager implements IBreakpointManagerListener, ICDIEvent
synchronized ( getBreakpointMap() ) {
ICDIBreakpoint cdiBreakpoint = getBreakpointMap().getCDIBreakpoint( breakpoint );
if ( cdiBreakpoint == null ) {
cdiBreakpoint = target.setLocationBreakpoint( ICDIBreakpoint.REGULAR, location, condition, true );
if ( location instanceof ICDILineLocation ) {
cdiBreakpoint = target.setLineBreakpoint( ICDIBreakpoint.REGULAR,
(ICDILineLocation)location, condition, true );
} else if ( location instanceof ICDIFunctionLocation ) {
cdiBreakpoint = target.setFunctionBreakpoint( ICDIBreakpoint.REGULAR,
(ICDIFunctionLocation)location, condition, true );
} else if ( location instanceof ICDIAddressLocation ) {
cdiBreakpoint = target.setAddressBreakpoint( ICDIBreakpoint.REGULAR,
(ICDIAddressLocation)location, condition, true );
}
if ( !enabled ) {
cdiBreakpoint.setEnabled( false );
}
@ -538,8 +548,7 @@ public class CBreakpointManager implements IBreakpointManagerListener, ICDIEvent
final ICDITarget cdiTarget = getCDITarget();
String function = breakpoint.getFunction();
String fileName = breakpoint.getFileName();
int lineNumber = breakpoint.getLineNumber();
final ICDILocation location = cdiTarget.createLocation( fileName, function, lineNumber );
final ICDIFunctionLocation location = cdiTarget.createFunctionLocation( fileName, function );
final ICDICondition condition = createCondition( breakpoint );
setLocationBreakpointOnTarget( breakpoint, cdiTarget, location, condition, enabled );
}
@ -549,7 +558,7 @@ public class CBreakpointManager implements IBreakpointManagerListener, ICDIEvent
final ICDITarget cdiTarget = getCDITarget();
String address = breakpoint.getAddress();
if ( address.startsWith( "0x" ) ) { //$NON-NLS-1$
final ICDILocation location = cdiTarget.createLocation( new BigInteger ( breakpoint.getAddress().substring( 2 ), 16 ) );
final ICDIAddressLocation location = cdiTarget.createAddressLocation( new BigInteger ( breakpoint.getAddress().substring( 2 ), 16 ) );
final ICDICondition condition = createCondition( breakpoint );
setLocationBreakpointOnTarget( breakpoint, cdiTarget, location, condition, enabled );
}
@ -560,7 +569,7 @@ public class CBreakpointManager implements IBreakpointManagerListener, ICDIEvent
ICDITarget cdiTarget = getCDITarget();
String handle = breakpoint.getSourceHandle();
IPath path = convertPath( handle );
ICDILocation location = cdiTarget.createLocation( path.toPortableString(), null, breakpoint.getLineNumber() );
ICDILineLocation location = cdiTarget.createLineLocation( path.toPortableString(), breakpoint.getLineNumber() );
ICDICondition condition = createCondition( breakpoint );
setLocationBreakpointOnTarget( breakpoint, cdiTarget, location, condition, enabled );
}
@ -616,16 +625,17 @@ public class CBreakpointManager implements IBreakpointManagerListener, ICDIEvent
private ICLineBreakpoint createLocationBreakpoint( ICDILocationBreakpoint cdiBreakpoint ) {
ICLineBreakpoint breakpoint = null;
try {
if ( !isEmpty( cdiBreakpoint.getLocation().getFile() ) ) {
ICDILocator location = cdiBreakpoint.getLocator();
if ( !isEmpty( location.getFile() ) ) {
ISourceLocator locator = getSourceLocator();
if ( locator instanceof ICSourceLocator || locator instanceof CSourceLookupDirector ) {
String sourceHandle = cdiBreakpoint.getLocation().getFile();
String sourceHandle = location.getFile();
IResource resource = getProject();
Object sourceElement = null;
if ( locator instanceof ICSourceLocator )
sourceElement = ((ICSourceLocator)locator).findSourceElement( cdiBreakpoint.getLocation().getFile() );
sourceElement = ((ICSourceLocator)locator).findSourceElement( location.getFile() );
else
sourceElement = ((CSourceLookupDirector)locator).getSourceElement( cdiBreakpoint.getLocation().getFile() );
sourceElement = ((CSourceLookupDirector)locator).getSourceElement( location.getFile() );
if ( sourceElement instanceof IFile || sourceElement instanceof IStorage ) {
sourceHandle = ( sourceElement instanceof IFile ) ? ((IFile)sourceElement).getLocation().toOSString() : ((IStorage)sourceElement).getFullPath().toOSString();
resource = ( sourceElement instanceof IFile ) ? (IResource)sourceElement : ResourcesPlugin.getWorkspace().getRoot();
@ -639,10 +649,10 @@ public class CBreakpointManager implements IBreakpointManagerListener, ICDIEvent
// }
}
}
else if ( !isEmpty( cdiBreakpoint.getLocation().getFunction() ) ) {
else if ( !isEmpty( location.getFunction() ) ) {
breakpoint = createFunctionBreakpoint( cdiBreakpoint );
}
else if ( !cdiBreakpoint.getLocation().getAddress().equals( BigInteger.ZERO ) ) {
else if ( !location.getAddress().equals( BigInteger.ZERO ) ) {
breakpoint = createAddressBreakpoint( cdiBreakpoint );
}
}
@ -656,7 +666,7 @@ public class CBreakpointManager implements IBreakpointManagerListener, ICDIEvent
private ICLineBreakpoint createLineBreakpoint( String sourceHandle, IResource resource, ICDILocationBreakpoint cdiBreakpoint ) throws CDIException, CoreException {
ICLineBreakpoint breakpoint = CDIDebugModel.createLineBreakpoint( sourceHandle,
resource,
cdiBreakpoint.getLocation().getLineNumber(),
cdiBreakpoint.getLocator().getLineNumber(),
cdiBreakpoint.isEnabled(),
cdiBreakpoint.getCondition().getIgnoreCount(),
cdiBreakpoint.getCondition().getExpression(),
@ -671,7 +681,7 @@ public class CBreakpointManager implements IBreakpointManagerListener, ICDIEvent
String sourceHandle = execFile.toOSString();
ICFunctionBreakpoint breakpoint = CDIDebugModel.createFunctionBreakpoint( sourceHandle,
getProject(),
cdiBreakpoint.getLocation().getFunction(),
cdiBreakpoint.getLocator().getFunction(),
-1,
-1,
-1,
@ -687,7 +697,7 @@ public class CBreakpointManager implements IBreakpointManagerListener, ICDIEvent
private ICAddressBreakpoint createAddressBreakpoint( ICDILocationBreakpoint cdiBreakpoint ) throws CDIException, CoreException {
IPath execFile = getExecFilePath();
String sourceHandle = execFile.toOSString();
IAddress address = getDebugTarget().getAddressFactory().createAddress( cdiBreakpoint.getLocation().getAddress() );
IAddress address = getDebugTarget().getAddressFactory().createAddress( cdiBreakpoint.getLocator().getAddress() );
ICAddressBreakpoint breakpoint = CDIDebugModel.createAddressBreakpoint( sourceHandle,
getProject(),
address,

View file

@ -27,9 +27,12 @@ import org.eclipse.cdt.debug.core.CDebugUtils;
import org.eclipse.cdt.debug.core.ICGlobalVariableManager;
import org.eclipse.cdt.debug.core.ICRegisterManager;
import org.eclipse.cdt.debug.core.cdi.CDIException;
import org.eclipse.cdt.debug.core.cdi.ICDIAddressLocation;
import org.eclipse.cdt.debug.core.cdi.ICDIBreakpointHit;
import org.eclipse.cdt.debug.core.cdi.ICDIEndSteppingRange;
import org.eclipse.cdt.debug.core.cdi.ICDIErrorInfo;
import org.eclipse.cdt.debug.core.cdi.ICDIFunctionLocation;
import org.eclipse.cdt.debug.core.cdi.ICDILineLocation;
import org.eclipse.cdt.debug.core.cdi.ICDILocation;
import org.eclipse.cdt.debug.core.cdi.ICDISession;
import org.eclipse.cdt.debug.core.cdi.ICDISessionConfiguration;
@ -897,7 +900,7 @@ public class CDebugTarget extends CDebugElement implements ICDebugTarget, ICDIEv
return;
}
changeState( CDebugElementState.RESTARTING );
ICDILocation location = getCDITarget().createLocation( "", "main", 0 ); //$NON-NLS-1$ //$NON-NLS-2$
ICDILocation location = getCDITarget().createFunctionLocation( "", "main" ); //$NON-NLS-1$ //$NON-NLS-2$
setInternalTemporaryBreakpoint( location );
try {
getCDITarget().restart();
@ -1260,7 +1263,16 @@ public class CDebugTarget extends CDebugElement implements ICDebugTarget, ICDIEv
public void setInternalTemporaryBreakpoint( ICDILocation location ) throws DebugException {
try {
getCDITarget().setLocationBreakpoint( ICDIBreakpoint.TEMPORARY, location, null, false );
if (location instanceof ICDIFunctionLocation) {
getCDITarget().setFunctionBreakpoint( ICDIBreakpoint.TEMPORARY, (ICDIFunctionLocation)location, null, false );
} else if (location instanceof ICDILineLocation) {
getCDITarget().setLineBreakpoint( ICDIBreakpoint.TEMPORARY, (ICDILineLocation)location, null, false );
} else if (location instanceof ICDIAddressLocation) {
getCDITarget().setAddressBreakpoint( ICDIBreakpoint.TEMPORARY, (ICDIAddressLocation)location, null, false );
} else {
// ???
targetRequestFailed("not_a_location", null); //$NON-NLS-1$
}
}
catch( CDIException e ) {
targetRequestFailed( e.getMessage(), null );
@ -1284,7 +1296,7 @@ public class CDebugTarget extends CDebugElement implements ICDebugTarget, ICDIEv
if ( skipBreakpoints ) {
getBreakpointManager().skipBreakpoints( true );
}
ICDILocation location = getCDITarget().createLocation( fileName, null, lineNumber );
ICDILocation location = getCDITarget().createLineLocation( fileName, lineNumber );
try {
getCDITarget().stepUntil( location );
}
@ -1442,7 +1454,7 @@ public class CDebugTarget extends CDebugElement implements ICDebugTarget, ICDIEv
if ( skipBreakpoints ) {
getBreakpointManager().skipBreakpoints( true );
}
ICDILocation location = getCDITarget().createLocation( new BigInteger( address.toString() ) );
ICDILocation location = getCDITarget().createAddressLocation( new BigInteger( address.toString() ) );
try {
getCDITarget().stepUntil( location );
}
@ -1509,7 +1521,7 @@ public class CDebugTarget extends CDebugElement implements ICDebugTarget, ICDIEv
public void jumpToLine( String fileName, int lineNumber ) throws DebugException {
if ( !canJumpToLine( fileName, lineNumber ) )
return;
ICDILocation location = getCDITarget().createLocation( fileName, null, lineNumber );
ICDILocation location = getCDITarget().createLineLocation( fileName, lineNumber );
try {
getCDITarget().resume( location );
}
@ -1532,7 +1544,7 @@ public class CDebugTarget extends CDebugElement implements ICDebugTarget, ICDIEv
public void jumpToAddress( IAddress address ) throws DebugException {
if ( !canJumpToAddress( address ) )
return;
ICDILocation location = getCDITarget().createLocation( new BigInteger( address.toString() ) );
ICDILocation location = getCDITarget().createAddressLocation( new BigInteger( address.toString() ) );
try {
getCDITarget().resume( location );
}

View file

@ -20,7 +20,7 @@ import java.util.List;
import org.eclipse.cdt.core.IAddress;
import org.eclipse.cdt.core.IAddressFactory;
import org.eclipse.cdt.debug.core.cdi.CDIException;
import org.eclipse.cdt.debug.core.cdi.ICDILocation;
import org.eclipse.cdt.debug.core.cdi.ICDILocator;
import org.eclipse.cdt.debug.core.cdi.event.ICDIEvent;
import org.eclipse.cdt.debug.core.cdi.event.ICDIEventListener;
import org.eclipse.cdt.debug.core.cdi.model.ICDIExpression;
@ -182,8 +182,8 @@ public class CStackFrame extends CDebugElement implements ICStackFrame, IRestart
ISourceLocator locator = ((CDebugTarget)getDebugTarget()).getSourceLocator();
if ( locator != null && locator instanceof IAdaptable && ((IAdaptable)locator).getAdapter( ICSourceLocator.class ) != null )
return ((ICSourceLocator)((IAdaptable)locator).getAdapter( ICSourceLocator.class )).getLineNumber( this );
if ( getCDIStackFrame() != null && getCDIStackFrame().getLocation() != null )
return getCDIStackFrame().getLocation().getLineNumber();
if ( getCDIStackFrame() != null && getCDIStackFrame().getLocator() != null )
return getCDIStackFrame().getLocator().getLineNumber();
}
return -1;
}
@ -206,16 +206,16 @@ public class CStackFrame extends CDebugElement implements ICStackFrame, IRestart
* @see org.eclipse.debug.core.model.IStackFrame#getName()
*/
public String getName() throws DebugException {
ICDILocation location = getCDIStackFrame().getLocation();
ICDILocator locator = getCDIStackFrame().getLocator();
String func = ""; //$NON-NLS-1$
String file = ""; //$NON-NLS-1$
String line = ""; //$NON-NLS-1$
if ( location.getFunction() != null && location.getFunction().trim().length() > 0 )
func += location.getFunction() + "() "; //$NON-NLS-1$
if ( location.getFile() != null && location.getFile().trim().length() > 0 ) {
file = location.getFile();
if ( location.getLineNumber() != 0 ) {
line = NumberFormat.getInstance().format( new Integer( location.getLineNumber() ) );
if ( locator.getFunction() != null && locator.getFunction().trim().length() > 0 )
func += locator.getFunction() + "() "; //$NON-NLS-1$
if ( locator.getFile() != null && locator.getFile().trim().length() > 0 ) {
file = locator.getFile();
if ( locator.getLineNumber() != 0 ) {
line = NumberFormat.getInstance().format( new Integer( locator.getLineNumber() ) );
}
}
else {
@ -432,8 +432,8 @@ public class CStackFrame extends CDebugElement implements ICStackFrame, IRestart
protected static boolean equalFrame( ICDIStackFrame frameOne, ICDIStackFrame frameTwo ) {
if ( frameOne == null || frameTwo == null )
return false;
ICDILocation loc1 = frameOne.getLocation();
ICDILocation loc2 = frameTwo.getLocation();
ICDILocator loc1 = frameOne.getLocator();
ICDILocator loc2 = frameTwo.getLocator();
if ( loc1 == null || loc2 == null )
return false;
if ( loc1.getFile() != null && loc1.getFile().length() > 0 && loc2.getFile() != null && loc2.getFile().length() > 0 && loc1.getFile().equals( loc2.getFile() ) ) {
@ -565,21 +565,21 @@ public class CStackFrame extends CDebugElement implements ICStackFrame, IRestart
*/
public IAddress getAddress() {
IAddressFactory factory = ((CDebugTarget)getDebugTarget()).getAddressFactory();
return factory.createAddress( getCDIStackFrame().getLocation().getAddress() );
return factory.createAddress( getCDIStackFrame().getLocator().getAddress() );
}
/* (non-Javadoc)
* @see org.eclipse.cdt.debug.core.model.ICStackFrame#getFile()
*/
public String getFile() {
return getCDIStackFrame().getLocation().getFile();
return getCDIStackFrame().getLocator().getFile();
}
/* (non-Javadoc)
* @see org.eclipse.cdt.debug.core.model.ICStackFrame#getFunction()
*/
public String getFunction() {
return getCDIStackFrame().getLocation().getFunction();
return getCDIStackFrame().getLocator().getFunction();
}
/* (non-Javadoc)
@ -593,7 +593,7 @@ public class CStackFrame extends CDebugElement implements ICStackFrame, IRestart
* @see org.eclipse.cdt.debug.core.model.ICStackFrame#getFrameLineNumber()
*/
public int getFrameLineNumber() {
return getCDIStackFrame().getLocation().getLineNumber();
return getCDIStackFrame().getLocator().getLineNumber();
}
protected synchronized void preserve() {