public LocalVariableIdentifierExpression(MethodInfo method, ISymUnmanagedVariable symVar) { if (method == null) throw new ArgumentNullException("method"); if (symVar == null) throw new ArgumentNullException("symVar"); this.method = method; this.symVar = symVar; this.name = symVar.Name; }
public void GetLocals(uint cLocals, out uint pcLocals, ISymUnmanagedVariable[] locals) { Debugger.Interop.CorSym.ISymUnmanagedVariable[] array_locals = new Debugger.Interop.CorSym.ISymUnmanagedVariable[locals.Length]; for (int i = 0; (i < locals.Length); i = (i + 1)) { if ((locals[i] != null)) { array_locals[i] = locals[i].WrappedObject; } } this.WrappedObject.GetLocals(cLocals, out pcLocals, array_locals); for (int i = 0; (i < locals.Length); i = (i + 1)) { if ((array_locals[i] != null)) { locals[i] = ISymUnmanagedVariable.Wrap(array_locals[i]); } else { locals[i] = null; } } }
ICorDebugValue GetLocalVariableCorValue(ISymUnmanagedVariable symVar) { try { return CorILFrame.GetLocalVariable((uint)symVar.AddressField1); } catch (COMException e) { if ((uint)e.ErrorCode == 0x80131304) throw new GetValueException("Unavailable in optimized code"); throw; } }
/// <summary> Returns value of give local variable </summary> public Value GetLocalVariableValue(ISymUnmanagedVariable symVar) { return new Value(this.Process, new LocalVariableIdentifierExpression(MethodInfo, symVar), GetLocalVariableCorValue(symVar)); }
ICorDebugValue GetCorValueOfLocalVariable(ISymUnmanagedVariable symVar) { if (this.HasExpired) throw new CannotGetValueException("FUNCTION_HAS_EXPIRED"); try { return CorILFrame.GetLocalVariable((uint)symVar.AddressField1); } catch (COMException e) { if ((uint)e.ErrorCode == 0x80131304) throw new CannotGetValueException("Unavailable in optimized code"); throw; } }
LocalVariable GetLocalVariable(ISymUnmanagedVariable symVar) { return new LocalVariable( symVar.Name, process, new IExpirable[] {this}, new IMutable[] {process.DebugeeState}, delegate { return GetCorValueOfLocalVariable(symVar); } ); }
/// <summary> Returns expression for the given local variable </summary> public Expression GetExpressionForLocalVariable(ISymUnmanagedVariable symVar) { return new LocalVariableIdentifierExpression(this, symVar); }
public override bool Equals(object o) { ISymUnmanagedVariable casted = o as ISymUnmanagedVariable; return((casted != null) && (casted.WrappedObject == wrappedObject)); }