Exemplo n.º 1
0
        private void VerifyFieldBuiltinType(CodeType codeType, string fieldName, params BuiltinType[] expected)
        {
            CodeType       fieldCodeType  = codeType.GetFieldType(fieldName);
            NativeCodeType nativeCodeType = fieldCodeType as NativeCodeType;

            Assert.NotNull(nativeCodeType);
            Assert.True(nativeCodeType.Tag == CodeTypeTag.BuiltinType || nativeCodeType.Tag == CodeTypeTag.Enum);
            VerifyBuiltinType(nativeCodeType, expected);
        }
Exemplo n.º 2
0
        private void VerifyBuiltinType(NativeCodeType codeType, params BuiltinType[] expected)
        {
            BuiltinType actual = codeType.BuiltinType;

            foreach (BuiltinType builtinType in expected)
            {
                if (actual == builtinType)
                {
                    return;
                }
            }

            Assert.Equal(expected[0], actual);
        }
Exemplo n.º 3
0
        /// <summary>
        /// Reads the simple data (1 to 8 bytes) for specified type and address to read from.
        /// </summary>
        /// <param name="codeType">Type of the code.</param>
        /// <param name="address">The address.</param>
        public ulong ReadSimpleData(CodeType codeType, ulong address)
        {
            NativeCodeType nativeCodeType = codeType as NativeCodeType;

            if (nativeCodeType == null)
            {
                return(Debugger.ReadSimpleData(codeType, address));
            }

            Module module = codeType.Module;

            using (ProcessSwitcher switcher = new ProcessSwitcher(DbgEngDll.StateCache, module.Process))
            {
                return(DbgEngSymbolProvider.typedData[Tuple.Create(module.Address, nativeCodeType.TypeId, address)].Data);
            }
        }
Exemplo n.º 4
0
        /// <summary>
        /// Reads the simple data (1 to 8 bytes) for specified type and address to read from.
        /// </summary>
        /// <param name="codeType">Type of the code.</param>
        /// <param name="address">The address.</param>
        public ulong ReadSimpleData(CodeType codeType, ulong address)
        {
            NativeCodeType nativeCodeType = codeType as NativeCodeType;

            if (nativeCodeType == null)
            {
                throw new ArgumentOutOfRangeException(nameof(codeType), "This is only supported for NativeCodeType");
            }

            Module module = codeType.Module;

            using (ProcessSwitcher switcher = new ProcessSwitcher(DbgEngDll.StateCache, module.Process))
            {
                return(typedData[Tuple.Create(module.Address, nativeCodeType.TypeId, address)].Data);
            }
        }