1
0
Fork 0
mirror of https://github.com/eclipse-cdt/cdt synced 2025-08-04 06:45:43 +02:00

Switch to the new memory view interfaces (Eclipse 3.1).

This commit is contained in:
Mikhail Khodjaiants 2004-12-21 19:55:31 +00:00
parent 7166ea11d2
commit 4a8b57d0ab
5 changed files with 84 additions and 45 deletions

View file

@ -1,3 +1,12 @@
2004-12-21 Mikhail Khodjaiants
Switch to the new memory view interfaces (Eclipse 3.1).
* InternalDebugCoreMessages.properties
* CMemoryBlockExtensionRetrieval.java: new
* CExtendedMemoryBlockRetrieval.java: deleted
* CDebugTarget.java
* CMemoryBlockExtension.java: new
* CExtendedMemoryBlock.java: deleted
2004-12-20 Mikhail Khodjaiants
Fix for bug 81698: NumberFormatException in CValue.
* CValue.java

View file

@ -14,7 +14,7 @@ import java.math.BigInteger;
import java.text.MessageFormat;
import org.eclipse.cdt.debug.core.CDebugCorePlugin;
import org.eclipse.cdt.debug.internal.core.model.CDebugTarget;
import org.eclipse.cdt.debug.internal.core.model.CExtendedMemoryBlock;
import org.eclipse.cdt.debug.internal.core.model.CMemoryBlockExtension;
import org.eclipse.cdt.debug.internal.core.model.CStackFrame;
import org.eclipse.cdt.debug.internal.core.model.CThread;
import org.eclipse.core.runtime.IStatus;
@ -23,25 +23,25 @@ import org.eclipse.debug.core.DebugException;
import org.eclipse.debug.core.model.IDebugElement;
import org.eclipse.debug.core.model.IDebugTarget;
import org.eclipse.debug.core.model.IMemoryBlock;
import org.eclipse.debug.core.model.IMemoryBlockExtension;
import org.eclipse.debug.core.model.IMemoryBlockExtensionRetrieval;
import org.eclipse.debug.core.model.IStackFrame;
import org.eclipse.debug.internal.core.memory.IExtendedMemoryBlock;
import org.eclipse.debug.internal.core.memory.IExtendedMemoryBlockRetrieval;
/**
* Implements the memory retrieval features based on the CDI model.
*/
public class CExtendedMemoryBlockRetrieval implements IExtendedMemoryBlockRetrieval {
public class CMemoryBlockExtensionRetrieval implements IMemoryBlockExtensionRetrieval {
/**
* Constructor for CExtendedMemoryBlockRetrieval.
* Constructor for CMemoryBlockExtensionRetrieval.
*/
public CExtendedMemoryBlockRetrieval() {
public CMemoryBlockExtensionRetrieval() {
}
/* (non-Javadoc)
* @see org.eclipse.debug.internal.core.memory.IExtendedMemoryBlockRetrieval#getExtendedMemoryBlock(java.lang.String, org.eclipse.debug.core.model.IDebugElement)
* @see org.eclipse.debug.core.model.IMemoryBlockExtensionRetrieval#getExtendedMemoryBlock(java.lang.String, org.eclipse.debug.core.model.IDebugElement)
*/
public IExtendedMemoryBlock getExtendedMemoryBlock( String expression, IDebugElement selected ) throws DebugException {
public IMemoryBlockExtension getExtendedMemoryBlock( String expression, IDebugElement selected ) throws DebugException {
String address = null;
if ( selected instanceof CStackFrame ) {
address = ((CStackFrame)selected).evaluateExpressionToString( expression );
@ -57,10 +57,10 @@ public class CExtendedMemoryBlockRetrieval implements IExtendedMemoryBlockRetrie
if ( address != null ) {
try {
BigInteger a = ( address.startsWith( "0x" ) ) ? new BigInteger( address.substring( 2 ), 16 ) : new BigInteger( address ); //$NON-NLS-1$
return new CExtendedMemoryBlock( (CDebugTarget)target, expression, a );
return new CMemoryBlockExtension( (CDebugTarget)target, expression, a );
}
catch( NumberFormatException e ) {
throw new DebugException( new Status( IStatus.ERROR, CDebugCorePlugin.getUniqueIdentifier(), DebugException.REQUEST_FAILED, MessageFormat.format( InternalDebugCoreMessages.getString( "CExtendedMemoryBlockRetrieval.0" ), new String[] { expression, address } ), null ) ); //$NON-NLS-1$
throw new DebugException( new Status( IStatus.ERROR, CDebugCorePlugin.getUniqueIdentifier(), DebugException.REQUEST_FAILED, MessageFormat.format( InternalDebugCoreMessages.getString( "CMemoryBlockExtensionRetrieval.0" ), new String[] { expression, address } ), null ) ); //$NON-NLS-1$
}
}
}

View file

@ -13,7 +13,7 @@ CBreakpointManager.1=Set breakpoint failed. Reason: {0}.
CBreakpointManager.2=Set breakpoint failed. Reason: {0}.
CBreakpointManager.4=Change breakpoint properties failed. Reason: {0}.
CGlobalVariableManager.0=Invalid global variables data.
CExtendedMemoryBlockRetrieval.0=Expression ''{0}'' evaluated to invalid address value: {1}.
CMemoryBlockExtensionRetrieval.0=Expression ''{0}'' evaluated to invalid address value: {1}.
DebugConfiguration.0=This debugger no longer supports this operation
CDebugAdapter.0=This debugger does not support debugging external files
CDebugAdapter.1=Debugger Process

View file

@ -16,7 +16,6 @@ import java.util.Arrays;
import java.util.Iterator;
import java.util.List;
import java.util.StringTokenizer;
import org.eclipse.cdt.core.CCorePlugin;
import org.eclipse.cdt.core.IAddress;
import org.eclipse.cdt.core.IAddressFactory;
@ -81,7 +80,7 @@ import org.eclipse.cdt.debug.core.model.IRunToAddress;
import org.eclipse.cdt.debug.core.model.IRunToLine;
import org.eclipse.cdt.debug.core.sourcelookup.ICSourceLocator;
import org.eclipse.cdt.debug.internal.core.CBreakpointManager;
import org.eclipse.cdt.debug.internal.core.CExtendedMemoryBlockRetrieval;
import org.eclipse.cdt.debug.internal.core.CMemoryBlockExtensionRetrieval;
import org.eclipse.cdt.debug.internal.core.CGlobalVariableManager;
import org.eclipse.cdt.debug.internal.core.CMemoryManager;
import org.eclipse.cdt.debug.internal.core.CRegisterManager;
@ -112,12 +111,12 @@ import org.eclipse.debug.core.model.IBreakpoint;
import org.eclipse.debug.core.model.IDebugTarget;
import org.eclipse.debug.core.model.IExpression;
import org.eclipse.debug.core.model.IMemoryBlock;
import org.eclipse.debug.core.model.IMemoryBlockExtensionRetrieval;
import org.eclipse.debug.core.model.IMemoryBlockRetrieval;
import org.eclipse.debug.core.model.IProcess;
import org.eclipse.debug.core.model.IRegisterGroup;
import org.eclipse.debug.core.model.ISourceLocator;
import org.eclipse.debug.core.model.IThread;
import org.eclipse.debug.internal.core.memory.IExtendedMemoryBlockRetrieval;
/**
* Debug target for C/C++ debug model.
@ -216,7 +215,7 @@ public class CDebugTarget extends CDebugElement implements ICDebugTarget, ICDIEv
*/
private IAddressFactory fAddressFactory;
private CExtendedMemoryBlockRetrieval fMemoryBlockRetrieval;
private CMemoryBlockExtensionRetrieval fMemoryBlockRetrieval;
/**
* Constructor for CDebugTarget.
@ -240,7 +239,7 @@ public class CDebugTarget extends CDebugElement implements ICDebugTarget, ICDIEv
setRegisterManager( new CRegisterManager( this ) );
setBreakpointManager( new CBreakpointManager( this ) );
setGlobalVariableManager( new CGlobalVariableManager( this ) );
setMemoryBlockRetrieval( new CExtendedMemoryBlockRetrieval() );
setMemoryBlockRetrieval( new CMemoryBlockExtensionRetrieval() );
initialize();
DebugPlugin.getDefault().getLaunchManager().addLaunchListener( this );
DebugPlugin.getDefault().getExpressionManager().addExpressionListener( this );
@ -860,7 +859,7 @@ public class CDebugTarget extends CDebugElement implements ICDebugTarget, ICDIEv
return getGlobalVariableManager();
if ( adapter.equals( ICDISession.class ) )
return getCDISession();
if ( adapter.equals( IExtendedMemoryBlockRetrieval.class ) )
if ( adapter.equals( IMemoryBlockExtensionRetrieval.class ) )
return getMemoryBlockRetrieval();
if ( adapter.equals( IMemoryBlockRetrieval.class ) )
return getMemoryBlockRetrieval();
@ -1837,11 +1836,11 @@ public class CDebugTarget extends CDebugElement implements ICDebugTarget, ICDIEv
return fAddressFactory;
}
private CExtendedMemoryBlockRetrieval getMemoryBlockRetrieval() {
private CMemoryBlockExtensionRetrieval getMemoryBlockRetrieval() {
return fMemoryBlockRetrieval;
}
private void setMemoryBlockRetrieval( CExtendedMemoryBlockRetrieval memoryBlockRetrieval ) {
private void setMemoryBlockRetrieval( CMemoryBlockExtensionRetrieval memoryBlockRetrieval ) {
fMemoryBlockRetrieval = memoryBlockRetrieval;
}

View file

@ -26,31 +26,14 @@ import org.eclipse.cdt.debug.core.model.IExecFileInfo;
import org.eclipse.debug.core.DebugEvent;
import org.eclipse.debug.core.DebugException;
import org.eclipse.debug.core.DebugPlugin;
import org.eclipse.debug.core.model.IMemoryBlockExtension;
import org.eclipse.debug.core.model.IMemoryBlockRetrieval;
import org.eclipse.debug.internal.core.memory.IExtendedMemoryBlock;
import org.eclipse.debug.internal.core.memory.MemoryByte;
import org.eclipse.debug.core.model.MemoryByte;
/**
* Represents a memory block in the CDI model.
*/
public class CExtendedMemoryBlock extends CDebugElement implements IExtendedMemoryBlock, ICDIEventListener {
private class CMemoryByte extends MemoryByte {
/**
* Constructor for CMemoryByte.
*/
public CMemoryByte( byte v, byte f ) {
this.value = v;
this.flags = f;
}
/**
* Constructor for CMemoryByte.
*/
public CMemoryByte() {
}
}
public class CMemoryBlockExtension extends CDebugElement implements IMemoryBlockExtension, ICDIEventListener {
/**
* The address expression this memory block is based on.
@ -75,9 +58,9 @@ public class CExtendedMemoryBlock extends CDebugElement implements IExtendedMemo
private HashSet fChanges = new HashSet();
/**
* Constructor for CExtendedMemoryBlock.
* Constructor for CMemoryBlockExtension.
*/
public CExtendedMemoryBlock( CDebugTarget target, String expression, BigInteger baseAddress ) {
public CMemoryBlockExtension( CDebugTarget target, String expression, BigInteger baseAddress ) {
super( target );
fExpression = expression;
fBaseAddress = baseAddress;
@ -164,7 +147,7 @@ public class CExtendedMemoryBlock extends CDebugElement implements IExtendedMemo
byte flags = MemoryByte.VALID;
if ( hasChanged( getRealBlockAddress().add( BigInteger.valueOf( i ) ) ) )
flags |= MemoryByte.CHANGED;
fBytes[i] = new CMemoryByte( bytes[i], flags );
fBytes[i] = new MemoryByte( bytes[i], flags );
}
}
}
@ -374,8 +357,8 @@ public class CExtendedMemoryBlock extends CDebugElement implements IExtendedMemo
if ( addresses[i].compareTo( start ) >= 0 && addresses[i].compareTo( start.add( BigInteger.valueOf( length ) ) ) < 0 ) {
int index = addresses[i].subtract( start ).intValue();
if ( index >= 0 && index < memBytes.length && index < newBytes.length ) {
memBytes[index].flags |= MemoryByte.CHANGED;
memBytes[index].value = newBytes[index];
memBytes[index].setChanged( true );
memBytes[index].setValue( newBytes[index] );
}
}
}
@ -404,7 +387,7 @@ public class CExtendedMemoryBlock extends CDebugElement implements IExtendedMemo
if ( real.compareTo( changes[i] ) <= 0 && real.add( BigInteger.valueOf( getBlockSize() ) ).compareTo( changes[i] ) > 0 ) {
int index = changes[i].subtract( real ).intValue();
if ( index >= 0 && index < fBytes.length ) {
fBytes[index].flags &= ~MemoryByte.CHANGED;
fBytes[index].setChanged( false );
}
}
}
@ -412,4 +395,52 @@ public class CExtendedMemoryBlock extends CDebugElement implements IExtendedMemo
fChanges.clear();
fireChangeEvent( DebugEvent.CONTENT );
}
/* (non-Javadoc)
* @see org.eclipse.debug.core.model.IMemoryBlockExtension#supportsChangeManagement()
*/
public boolean supportsChangeManagement() {
// TODO Auto-generated method stub
return false;
}
/* (non-Javadoc)
* @see org.eclipse.debug.core.model.IMemoryBlockExtension#connect(java.lang.Object)
*/
public void connect( Object object ) {
// TODO Auto-generated method stub
}
/* (non-Javadoc)
* @see org.eclipse.debug.core.model.IMemoryBlockExtension#disconnect(java.lang.Object)
*/
public void disconnect( Object object ) {
// TODO Auto-generated method stub
}
/* (non-Javadoc)
* @see org.eclipse.debug.core.model.IMemoryBlockExtension#getConnected()
*/
public Object[] getConnected() {
// TODO Auto-generated method stub
return null;
}
/* (non-Javadoc)
* @see org.eclipse.debug.core.model.IMemoryBlockExtension#dispose()
*/
public void dispose() {
// TODO Auto-generated method stub
}
/* (non-Javadoc)
* @see org.eclipse.debug.core.model.IMemoryBlockExtension#getAddressibleSize()
*/
public int getAddressibleSize() {
// TODO Auto-generated method stub
return 0;
}
}