Ejemplo n.º 1
0
        internal static int GetSlot(this ISymUnmanagedVariable local)
        {
            int slot;

            local.GetAddressField1(out slot);
            return(slot);
        }
Ejemplo n.º 2
0
        internal static int GetSlot(this ISymUnmanagedVariable local)
        {
            int result;
            int hr = local.GetAddressField1(out result);

            ThrowExceptionForHR(hr);
            return(result);
        }
Ejemplo n.º 3
0
        public static int GetSlot(this ISymUnmanagedVariable local)
        {
            if (local == null)
            {
                throw new ArgumentNullException(nameof(local));
            }

            int result;

            ThrowExceptionForHR(local.GetAddressField1(out result));
            return(result);
        }
        static Value GetLocalVariableValue(StackFrame context, ISymUnmanagedVariable symVar)
        {
            ICorDebugValue corVal;

            try {
                corVal = context.CorILFrame.GetLocalVariable((uint)symVar.GetAddressField1());
            } catch (COMException e) {
                if ((uint)e.ErrorCode == 0x80131304)
                {
                    throw new GetValueException("Unavailable in optimized code");
                }
                throw;
            }
            return(new Value(context.AppDomain, corVal));
        }
Ejemplo n.º 5
0
        public static void ValidateVariable(ISymUnmanagedVariable variable, string name, int slot, LocalVariableAttributes attributes, byte[] signature)
        {
            int length, length2;

            // name:
            Assert.Equal(HResult.S_OK, variable.GetName(0, out length, null));
            Assert.Equal(name.Length + 1, length);
            var actualName = new char[length];

            Assert.Equal(HResult.S_OK, variable.GetName(length, out length2, actualName));
            Assert.Equal(length, length2);
            Assert.Equal(name + "\0", new string(actualName));

            int value;

            Assert.Equal(HResult.S_OK, variable.GetAddressField1(out value));
            Assert.Equal(slot, value);

            Assert.Equal(HResult.E_NOTIMPL, variable.GetAddressField2(out value));
            Assert.Equal(HResult.E_NOTIMPL, variable.GetAddressField3(out value));
            Assert.Equal(HResult.E_NOTIMPL, variable.GetStartOffset(out value));
            Assert.Equal(HResult.E_NOTIMPL, variable.GetEndOffset(out value));

            Assert.Equal(HResult.S_OK, variable.GetAttributes(out value));
            Assert.Equal(attributes, (LocalVariableAttributes)value);

            Assert.Equal(HResult.S_OK, variable.GetAddressKind(out value));
            Assert.Equal(1, value);

            Assert.Equal(HResult.S_OK, variable.GetSignature(0, out length, null));
            var actualSignature = new byte[length];

            Assert.Equal(HResult.S_OK, variable.GetSignature(length, out length2, actualSignature));
            Assert.Equal(length, length2);
            AssertEx.Equal(signature, actualSignature);
        }
Ejemplo n.º 6
0
 static Value GetLocalVariableValue(StackFrame context, ISymUnmanagedVariable symVar)
 {
     ICorDebugValue corVal;
     try {
         corVal = context.CorILFrame.GetLocalVariable((uint)symVar.GetAddressField1());
     } catch (COMException e) {
         if ((uint)e.ErrorCode == 0x80131304) throw new GetValueException("Unavailable in optimized code");
         throw;
     }
     return new Value(context.AppDomain, corVal);
 }
Ejemplo n.º 7
0
        public static void ValidateVariable(ISymUnmanagedVariable variable, string name, int slot, LocalVariableAttributes attributes, byte[] signature)
        {
            int length, length2;

            // name:
            Assert.Equal(HResult.S_OK, variable.GetName(0, out length, null));
            Assert.Equal(name.Length + 1, length);
            var actualName = new char[length];
            Assert.Equal(HResult.S_OK, variable.GetName(length, out length2, actualName));
            Assert.Equal(length, length2);
            Assert.Equal(name + "\0", new string(actualName));

            int value;
            Assert.Equal(HResult.S_OK, variable.GetAddressField1(out value));
            Assert.Equal(slot, value);

            Assert.Equal(HResult.E_NOTIMPL, variable.GetAddressField2(out value));
            Assert.Equal(HResult.E_NOTIMPL, variable.GetAddressField3(out value));
            Assert.Equal(HResult.E_NOTIMPL, variable.GetStartOffset(out value));
            Assert.Equal(HResult.E_NOTIMPL, variable.GetEndOffset(out value));

            Assert.Equal(HResult.S_OK, variable.GetAttributes(out value));
            Assert.Equal(attributes, (LocalVariableAttributes)value);

            Assert.Equal(HResult.S_OK, variable.GetAddressKind(out value));
            Assert.Equal(1, value);

            Assert.Equal(HResult.S_OK, variable.GetSignature(0, out length, null));
            var actualSignature = new byte[length];
            Assert.Equal(HResult.S_OK, variable.GetSignature(length, out length2, actualSignature));
            Assert.Equal(length, length2);
            AssertEx.Equal(signature, actualSignature);
        }