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); }
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); }
/// <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); } }
/// <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); } }