mirror of
https://github.com/eclipse-cdt/cdt
synced 2025-04-29 19:45:01 +02:00
more fix for 100442
This commit is contained in:
parent
a5fdd63e34
commit
b2aff9b7c5
4 changed files with 110 additions and 47 deletions
|
@ -13,14 +13,16 @@ package org.eclipse.cdt.debug.mi.core.cdi;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.Collections;
|
import java.util.Collections;
|
||||||
import java.util.Hashtable;
|
import java.util.Hashtable;
|
||||||
|
import java.util.LinkedHashMap;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
import java.util.Map.Entry;
|
||||||
|
|
||||||
import org.eclipse.cdt.debug.core.cdi.CDIException;
|
import org.eclipse.cdt.debug.core.cdi.CDIException;
|
||||||
import org.eclipse.cdt.debug.core.cdi.model.ICDIRegisterDescriptor;
|
import org.eclipse.cdt.debug.core.cdi.model.ICDIRegisterDescriptor;
|
||||||
import org.eclipse.cdt.debug.core.cdi.model.ICDIRegisterGroup;
|
import org.eclipse.cdt.debug.core.cdi.model.ICDIRegisterGroup;
|
||||||
import org.eclipse.cdt.debug.mi.core.MIException;
|
import org.eclipse.cdt.debug.mi.core.MIException;
|
||||||
import org.eclipse.cdt.debug.mi.core.MISession;
|
import org.eclipse.cdt.debug.mi.core.MISession;
|
||||||
import org.eclipse.cdt.debug.mi.core.cdi.model.LocalVariable;
|
|
||||||
import org.eclipse.cdt.debug.mi.core.cdi.model.Register;
|
import org.eclipse.cdt.debug.mi.core.cdi.model.Register;
|
||||||
import org.eclipse.cdt.debug.mi.core.cdi.model.RegisterDescriptor;
|
import org.eclipse.cdt.debug.mi.core.cdi.model.RegisterDescriptor;
|
||||||
import org.eclipse.cdt.debug.mi.core.cdi.model.RegisterGroup;
|
import org.eclipse.cdt.debug.mi.core.cdi.model.RegisterGroup;
|
||||||
|
@ -49,14 +51,86 @@ import org.eclipse.cdt.debug.mi.core.output.MIVarUpdateInfo;
|
||||||
*/
|
*/
|
||||||
public class RegisterManager extends Manager {
|
public class RegisterManager extends Manager {
|
||||||
|
|
||||||
|
final int MAX_ENTRIES = 150;
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* LRUMap.<br>
|
||||||
|
* Simple LRU cache using a LinkedHashMap
|
||||||
|
*/
|
||||||
|
class LRUMap extends LinkedHashMap {
|
||||||
|
private static final long serialVersionUID = 1L;
|
||||||
|
LRUMap() {
|
||||||
|
super(MAX_ENTRIES+1, .75F, true);
|
||||||
|
}
|
||||||
|
/* (non-Javadoc)
|
||||||
|
* @see java.util.LinkedHashMap#removeEldestEntry(java.util.Map.Entry)
|
||||||
|
*/
|
||||||
|
protected boolean removeEldestEntry(Entry eldest) {
|
||||||
|
boolean toRemove = size() > MAX_ENTRIES;
|
||||||
|
if (toRemove) {
|
||||||
|
ShadowRegister v = (ShadowRegister)eldest.getValue();
|
||||||
|
try {
|
||||||
|
Target target = (Target)v.getTarget();
|
||||||
|
removeMIVar(target.getMISession(), v.getMIVar());
|
||||||
|
} catch (Exception e) {
|
||||||
|
// ignore all
|
||||||
|
}
|
||||||
|
v.setMIVar(null);
|
||||||
|
}
|
||||||
|
return toRemove;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* ShadowRegister.<br>
|
||||||
|
* To keep track of the register value we can a shadow variable. If the
|
||||||
|
* the variable MIVar was destroy by the LRUCache we try to recreate it.
|
||||||
|
*/
|
||||||
|
class ShadowRegister extends Register {
|
||||||
|
|
||||||
|
public ShadowRegister(Register reg, StackFrame frame, String n, MIVar v) {
|
||||||
|
super((Target)reg.getTarget(), (Thread)frame.getThread(), frame, n, null, 0, 0, v);
|
||||||
|
try {
|
||||||
|
fTypename = reg.getTypeName();
|
||||||
|
} catch (CDIException e) {
|
||||||
|
// ignore
|
||||||
|
}
|
||||||
|
try {
|
||||||
|
fType = reg.getType();
|
||||||
|
} catch (CDIException e) {
|
||||||
|
// ignore
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/* (non-Javadoc)
|
||||||
|
* @see org.eclipse.cdt.debug.mi.core.cdi.model.Variable#getMIVar()
|
||||||
|
*/
|
||||||
|
public MIVar getMIVar() {
|
||||||
|
if (fMiVar == null) {
|
||||||
|
try {
|
||||||
|
fMiVar = createMiVar((StackFrame)getStackFrame(), getName());
|
||||||
|
} catch (CDIException e) {
|
||||||
|
//
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return fMiVar;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setMIVar(MIVar newMIVar) {
|
||||||
|
fMiVar = newMIVar;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
Map regsMap;
|
Map regsMap;
|
||||||
Map varMap;
|
Map varsMap;
|
||||||
MIVarChange[] noChanges = new MIVarChange[0];
|
MIVarChange[] noChanges = new MIVarChange[0];
|
||||||
|
|
||||||
public RegisterManager(Session session) {
|
public RegisterManager(Session session) {
|
||||||
super(session, true);
|
super(session, true);
|
||||||
regsMap = new Hashtable();
|
regsMap = new Hashtable();
|
||||||
varMap = new Hashtable();
|
varsMap = new Hashtable();
|
||||||
// The register bookkeeping provides better update control.
|
// The register bookkeeping provides better update control.
|
||||||
setAutoUpdate( true );
|
setAutoUpdate( true );
|
||||||
}
|
}
|
||||||
|
@ -70,13 +144,13 @@ public class RegisterManager extends Manager {
|
||||||
return regsList;
|
return regsList;
|
||||||
}
|
}
|
||||||
|
|
||||||
synchronized List getVariableList(Target target) {
|
synchronized Map getVariableMap(Target target) {
|
||||||
List varList = (List)varMap.get(target);
|
Map varMap = (Map)varsMap.get(target);
|
||||||
if (varList == null) {
|
if (varMap == null) {
|
||||||
varList = Collections.synchronizedList(new ArrayList());
|
varMap = Collections.synchronizedMap(new LRUMap());
|
||||||
varMap.put(target, varList);
|
varsMap.put(target, varMap);
|
||||||
}
|
}
|
||||||
return varList;
|
return varMap;
|
||||||
}
|
}
|
||||||
|
|
||||||
public ICDIRegisterGroup[] getRegisterGroups(Target target) throws CDIException {
|
public ICDIRegisterGroup[] getRegisterGroups(Target target) throws CDIException {
|
||||||
|
@ -135,7 +209,6 @@ public class RegisterManager extends Manager {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return reg;
|
return reg;
|
||||||
//throw new CDIException(CdiResources.getString("cdi.RegisterManager.Wrong_register_type")); //$NON-NLS-1$
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public void destroyRegister(Register reg) {
|
public void destroyRegister(Register reg) {
|
||||||
|
@ -167,7 +240,7 @@ public class RegisterManager extends Manager {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public Variable createVariable(StackFrame frame, String reg) throws CDIException {
|
public MIVar createMiVar(StackFrame frame, String regName) throws CDIException {
|
||||||
Target target = (Target)frame.getTarget();
|
Target target = (Target)frame.getTarget();
|
||||||
Thread currentThread = (Thread)target.getCurrentThread();
|
Thread currentThread = (Thread)target.getCurrentThread();
|
||||||
StackFrame currentFrame = currentThread.getCurrentStackFrame();
|
StackFrame currentFrame = currentThread.getCurrentStackFrame();
|
||||||
|
@ -176,16 +249,13 @@ public class RegisterManager extends Manager {
|
||||||
try {
|
try {
|
||||||
MISession mi = target.getMISession();
|
MISession mi = target.getMISession();
|
||||||
CommandFactory factory = mi.getCommandFactory();
|
CommandFactory factory = mi.getCommandFactory();
|
||||||
MIVarCreate var = factory.createMIVarCreate(reg);
|
MIVarCreate var = factory.createMIVarCreate(regName);
|
||||||
mi.postCommand(var);
|
mi.postCommand(var);
|
||||||
MIVarCreateInfo info = var.getMIVarCreateInfo();
|
MIVarCreateInfo info = var.getMIVarCreateInfo();
|
||||||
if (info == null) {
|
if (info == null) {
|
||||||
throw new CDIException(CdiResources.getString("cdi.Common.No_answer")); //$NON-NLS-1$
|
throw new CDIException(CdiResources.getString("cdi.Common.No_answer")); //$NON-NLS-1$
|
||||||
}
|
}
|
||||||
Variable variable = new LocalVariable(target, null, frame, reg, null, 0, 0, info.getMIVar());
|
return info.getMIVar();
|
||||||
List varList = getVariableList(target);
|
|
||||||
varList.add(variable);
|
|
||||||
return variable;
|
|
||||||
} catch (MIException e) {
|
} catch (MIException e) {
|
||||||
throw new MI2CDIException(e);
|
throw new MI2CDIException(e);
|
||||||
} finally {
|
} finally {
|
||||||
|
@ -194,6 +264,15 @@ public class RegisterManager extends Manager {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public Variable createShadowRegister(Register register, StackFrame frame, String regName) throws CDIException {
|
||||||
|
Target target = (Target)frame.getTarget();
|
||||||
|
MIVar miVar = createMiVar(frame, regName);
|
||||||
|
ShadowRegister variable = new ShadowRegister(register, frame, regName, miVar);
|
||||||
|
Map varMap = getVariableMap(target);
|
||||||
|
varMap.put(miVar.getVarName(), variable);
|
||||||
|
return variable;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Use by the eventManager to find the Register;
|
* Use by the eventManager to find the Register;
|
||||||
*/
|
*/
|
||||||
|
@ -234,13 +313,6 @@ public class RegisterManager extends Manager {
|
||||||
|
|
||||||
public void update(Target target) throws CDIException {
|
public void update(Target target) throws CDIException {
|
||||||
MISession mi = target.getMISession();
|
MISession mi = target.getMISession();
|
||||||
|
|
||||||
// Variable[] vars = getVariables(target);
|
|
||||||
// for (int i = 0; i < vars.length; ++i) {
|
|
||||||
// removeMIVar(mi, vars[i].getMIVar());
|
|
||||||
// List varList = getVariableList(target);
|
|
||||||
// varList.remove(vars[i]);
|
|
||||||
// }
|
|
||||||
CommandFactory factory = mi.getCommandFactory();
|
CommandFactory factory = mi.getCommandFactory();
|
||||||
MIDataListChangedRegisters changed = factory.createMIDataListChangedRegisters();
|
MIDataListChangedRegisters changed = factory.createMIDataListChangedRegisters();
|
||||||
try {
|
try {
|
||||||
|
@ -301,7 +373,7 @@ public class RegisterManager extends Manager {
|
||||||
}
|
}
|
||||||
|
|
||||||
private Variable[] getVariables(Target target) {
|
private Variable[] getVariables(Target target) {
|
||||||
List varList = (List)varMap.get(target);
|
List varList = (List)varsMap.get(target);
|
||||||
if (varList != null) {
|
if (varList != null) {
|
||||||
return (Variable[]) varList.toArray(new Variable[varList.size()]);
|
return (Variable[]) varList.toArray(new Variable[varList.size()]);
|
||||||
}
|
}
|
||||||
|
@ -331,5 +403,4 @@ public class RegisterManager extends Manager {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -10,24 +10,15 @@
|
||||||
*******************************************************************************/
|
*******************************************************************************/
|
||||||
package org.eclipse.cdt.debug.mi.core.cdi.model;
|
package org.eclipse.cdt.debug.mi.core.cdi.model;
|
||||||
|
|
||||||
import java.util.List;
|
|
||||||
|
|
||||||
import org.eclipse.cdt.debug.core.cdi.CDIException;
|
import org.eclipse.cdt.debug.core.cdi.CDIException;
|
||||||
import org.eclipse.cdt.debug.core.cdi.model.ICDIRegister;
|
import org.eclipse.cdt.debug.core.cdi.model.ICDIRegister;
|
||||||
import org.eclipse.cdt.debug.core.cdi.model.ICDIStackFrame;
|
import org.eclipse.cdt.debug.core.cdi.model.ICDIStackFrame;
|
||||||
import org.eclipse.cdt.debug.core.cdi.model.ICDITarget;
|
import org.eclipse.cdt.debug.core.cdi.model.ICDITarget;
|
||||||
import org.eclipse.cdt.debug.core.cdi.model.ICDIValue;
|
import org.eclipse.cdt.debug.core.cdi.model.ICDIValue;
|
||||||
import org.eclipse.cdt.debug.mi.core.MIException;
|
|
||||||
import org.eclipse.cdt.debug.mi.core.MISession;
|
|
||||||
import org.eclipse.cdt.debug.mi.core.cdi.CdiResources;
|
|
||||||
import org.eclipse.cdt.debug.mi.core.cdi.ExpressionManager;
|
|
||||||
import org.eclipse.cdt.debug.mi.core.cdi.MI2CDIException;
|
|
||||||
import org.eclipse.cdt.debug.mi.core.cdi.RegisterManager;
|
import org.eclipse.cdt.debug.mi.core.cdi.RegisterManager;
|
||||||
import org.eclipse.cdt.debug.mi.core.cdi.Session;
|
import org.eclipse.cdt.debug.mi.core.cdi.Session;
|
||||||
import org.eclipse.cdt.debug.mi.core.command.CommandFactory;
|
|
||||||
import org.eclipse.cdt.debug.mi.core.command.MIVarCreate;
|
|
||||||
import org.eclipse.cdt.debug.mi.core.output.MIVar;
|
import org.eclipse.cdt.debug.mi.core.output.MIVar;
|
||||||
import org.eclipse.cdt.debug.mi.core.output.MIVarCreateInfo;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*/
|
*/
|
||||||
|
@ -60,6 +51,8 @@ public class Register extends Variable implements ICDIRegister {
|
||||||
String n = getName();
|
String n = getName();
|
||||||
if (!n.startsWith("$")) { //$NON-NLS-1$
|
if (!n.startsWith("$")) { //$NON-NLS-1$
|
||||||
fFullName = "$" + n; //$NON-NLS-1$
|
fFullName = "$" + n; //$NON-NLS-1$
|
||||||
|
} else {
|
||||||
|
fFullName = n;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return fFullName;
|
return fFullName;
|
||||||
|
@ -84,7 +77,7 @@ public class Register extends Variable implements ICDIRegister {
|
||||||
public ICDIValue getValue(ICDIStackFrame context) throws CDIException {
|
public ICDIValue getValue(ICDIStackFrame context) throws CDIException {
|
||||||
Session session = (Session)getTarget().getSession();
|
Session session = (Session)getTarget().getSession();
|
||||||
RegisterManager mgr = session.getRegisterManager();
|
RegisterManager mgr = session.getRegisterManager();
|
||||||
Variable var = mgr.createVariable((StackFrame)context, getQualifiedName());
|
Variable var = mgr.createShadowRegister(this, (StackFrame)context, getQualifiedName());
|
||||||
return var.getValue();
|
return var.getValue();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -73,7 +73,7 @@ import org.eclipse.cdt.debug.mi.core.output.MIVarShowAttributesInfo;
|
||||||
*/
|
*/
|
||||||
public abstract class Variable extends VariableDescriptor implements ICDIVariable {
|
public abstract class Variable extends VariableDescriptor implements ICDIVariable {
|
||||||
|
|
||||||
MIVar fMiVar;
|
protected MIVar fMiVar;
|
||||||
Value value;
|
Value value;
|
||||||
public ICDIVariable[] children = new ICDIVariable[0];
|
public ICDIVariable[] children = new ICDIVariable[0];
|
||||||
String editable = null;
|
String editable = null;
|
||||||
|
@ -273,7 +273,7 @@ public abstract class Variable extends VariableDescriptor implements ICDIVariabl
|
||||||
String name, String fullName, int pos, int depth, MIVar miVar);
|
String name, String fullName, int pos, int depth, MIVar miVar);
|
||||||
|
|
||||||
public int getChildrenNumber() throws CDIException {
|
public int getChildrenNumber() throws CDIException {
|
||||||
return fMiVar.getNumChild();
|
return getMIVar().getNumChild();
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -333,7 +333,7 @@ public abstract class Variable extends VariableDescriptor implements ICDIVariabl
|
||||||
Target target = (Target)getTarget();
|
Target target = (Target)getTarget();
|
||||||
MISession miSession = target.getMISession();
|
MISession miSession = target.getMISession();
|
||||||
CommandFactory factory = miSession.getCommandFactory();
|
CommandFactory factory = miSession.getCommandFactory();
|
||||||
MIVarAssign var = factory.createMIVarAssign(fMiVar.getVarName(), expression);
|
MIVarAssign var = factory.createMIVarAssign(getMIVar().getVarName(), expression);
|
||||||
try {
|
try {
|
||||||
miSession.postCommand(var);
|
miSession.postCommand(var);
|
||||||
MIInfo info = var.getMIInfo();
|
MIInfo info = var.getMIInfo();
|
||||||
|
@ -346,7 +346,7 @@ public abstract class Variable extends VariableDescriptor implements ICDIVariabl
|
||||||
|
|
||||||
// If the assign was succesfull fire a MIVarChangedEvent() for the variable
|
// If the assign was succesfull fire a MIVarChangedEvent() for the variable
|
||||||
// Note GDB will not fire an event for the changed variable we have to do it manually.
|
// Note GDB will not fire an event for the changed variable we have to do it manually.
|
||||||
MIVarChangedEvent change = new MIVarChangedEvent(miSession, var.getToken(), fMiVar.getVarName());
|
MIVarChangedEvent change = new MIVarChangedEvent(miSession, var.getToken(), getMIVar().getVarName());
|
||||||
miSession.fireEvent(change);
|
miSession.fireEvent(change);
|
||||||
|
|
||||||
// Changing values may have side effects i.e. affecting other variables
|
// Changing values may have side effects i.e. affecting other variables
|
||||||
|
@ -382,7 +382,7 @@ public abstract class Variable extends VariableDescriptor implements ICDIVariabl
|
||||||
if (editable == null) {
|
if (editable == null) {
|
||||||
MISession mi = ((Target) getTarget()).getMISession();
|
MISession mi = ((Target) getTarget()).getMISession();
|
||||||
CommandFactory factory = mi.getCommandFactory();
|
CommandFactory factory = mi.getCommandFactory();
|
||||||
MIVarShowAttributes var = factory.createMIVarShowAttributes(fMiVar.getVarName());
|
MIVarShowAttributes var = factory.createMIVarShowAttributes(getMIVar().getVarName());
|
||||||
try {
|
try {
|
||||||
mi.postCommand(var);
|
mi.postCommand(var);
|
||||||
MIVarShowAttributesInfo info = var.getMIVarShowAttributesInfo();
|
MIVarShowAttributesInfo info = var.getMIVarShowAttributesInfo();
|
||||||
|
@ -404,7 +404,7 @@ public abstract class Variable extends VariableDescriptor implements ICDIVariabl
|
||||||
int fmt = Format.toMIFormat(format);
|
int fmt = Format.toMIFormat(format);
|
||||||
MISession mi = ((Target) getTarget()).getMISession();
|
MISession mi = ((Target) getTarget()).getMISession();
|
||||||
CommandFactory factory = mi.getCommandFactory();
|
CommandFactory factory = mi.getCommandFactory();
|
||||||
MIVarSetFormat var = factory.createMIVarSetFormat(fMiVar.getVarName(), fmt);
|
MIVarSetFormat var = factory.createMIVarSetFormat(getMIVar().getVarName(), fmt);
|
||||||
try {
|
try {
|
||||||
mi.postCommand(var);
|
mi.postCommand(var);
|
||||||
MIInfo info = var.getMIInfo();
|
MIInfo info = var.getMIInfo();
|
||||||
|
@ -432,7 +432,7 @@ public abstract class Variable extends VariableDescriptor implements ICDIVariabl
|
||||||
* @return
|
* @return
|
||||||
*/
|
*/
|
||||||
public boolean equals(Variable variable) {
|
public boolean equals(Variable variable) {
|
||||||
return fMiVar.getVarName().equals(variable.getMIVar().getVarName());
|
return getMIVar().getVarName().equals(variable.getMIVar().getVarName());
|
||||||
}
|
}
|
||||||
|
|
||||||
/* (non-Javadoc)
|
/* (non-Javadoc)
|
||||||
|
@ -449,11 +449,11 @@ public abstract class Variable extends VariableDescriptor implements ICDIVariabl
|
||||||
*/
|
*/
|
||||||
public String getTypeName() throws CDIException {
|
public String getTypeName() throws CDIException {
|
||||||
if (fTypename == null) {
|
if (fTypename == null) {
|
||||||
fTypename = fMiVar.getType();
|
fTypename = getMIVar().getType();
|
||||||
if (fTypename == null || fTypename.length() == 0) {
|
if (fTypename == null || fTypename.length() == 0) {
|
||||||
MISession mi = ((Target) getTarget()).getMISession();
|
MISession mi = ((Target) getTarget()).getMISession();
|
||||||
CommandFactory factory = mi.getCommandFactory();
|
CommandFactory factory = mi.getCommandFactory();
|
||||||
MIVarInfoType infoType = factory.createMIVarInfoType(fMiVar.getVarName());
|
MIVarInfoType infoType = factory.createMIVarInfoType(getMIVar().getVarName());
|
||||||
try {
|
try {
|
||||||
mi.postCommand(infoType);
|
mi.postCommand(infoType);
|
||||||
MIVarInfoTypeInfo info = infoType.getMIVarInfoTypeInfo();
|
MIVarInfoTypeInfo info = infoType.getMIVarInfoTypeInfo();
|
||||||
|
|
|
@ -13,7 +13,6 @@ package org.eclipse.cdt.debug.mi.core.cdi.model;
|
||||||
import org.eclipse.cdt.debug.core.cdi.CDIException;
|
import org.eclipse.cdt.debug.core.cdi.CDIException;
|
||||||
import org.eclipse.cdt.debug.core.cdi.model.ICDIStackFrame;
|
import org.eclipse.cdt.debug.core.cdi.model.ICDIStackFrame;
|
||||||
import org.eclipse.cdt.debug.core.cdi.model.ICDIThread;
|
import org.eclipse.cdt.debug.core.cdi.model.ICDIThread;
|
||||||
import org.eclipse.cdt.debug.core.cdi.model.ICDIVariable;
|
|
||||||
import org.eclipse.cdt.debug.core.cdi.model.ICDIVariableDescriptor;
|
import org.eclipse.cdt.debug.core.cdi.model.ICDIVariableDescriptor;
|
||||||
import org.eclipse.cdt.debug.core.cdi.model.type.ICDIType;
|
import org.eclipse.cdt.debug.core.cdi.model.type.ICDIType;
|
||||||
import org.eclipse.cdt.debug.mi.core.MIException;
|
import org.eclipse.cdt.debug.mi.core.MIException;
|
||||||
|
@ -45,8 +44,8 @@ public abstract class VariableDescriptor extends CObject implements ICDIVariable
|
||||||
|
|
||||||
String qualifiedName = null;
|
String qualifiedName = null;
|
||||||
String fFullName = null;
|
String fFullName = null;
|
||||||
ICDIType fType = null;
|
protected ICDIType fType = null;
|
||||||
String fTypename = null;
|
protected String fTypename = null;
|
||||||
String sizeof = null;
|
String sizeof = null;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
Loading…
Add table
Reference in a new issue