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:
parent
0bca2b33c3
commit
838acedf59
19 changed files with 392 additions and 111 deletions
|
@ -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
|
||||
|
|
|
@ -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();
|
||||
|
||||
}
|
|
@ -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();
|
||||
|
||||
}
|
|
@ -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();
|
||||
|
||||
}
|
|
@ -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();
|
||||
}
|
|
@ -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);
|
||||
|
||||
|
|
|
@ -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 {
|
||||
|
||||
}
|
|
@ -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 {
|
||||
|
||||
}
|
|
@ -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;
|
||||
|
||||
}
|
||||
|
|
|
@ -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;
|
||||
|
||||
|
||||
}
|
||||
|
|
|
@ -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 {
|
||||
|
||||
}
|
|
@ -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 {
|
||||
}
|
|
@ -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();
|
||||
}
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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);
|
||||
|
||||
}
|
||||
|
|
|
@ -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 );
|
||||
}
|
||||
|
|
|
@ -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,
|
||||
|
|
|
@ -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 );
|
||||
}
|
||||
|
|
|
@ -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() {
|
||||
|
|
Loading…
Add table
Reference in a new issue