public IDebuggerValue GetElementAtPosition(int index) { return(debugger.Dispatcher.UI(() => { var corValue = value.GetElementAtPosition(index); return corValue == null ? null : new DebuggerValue(debugger, corValue); })); }
internal static DbgRawAddressValue?GetArrayAddress(CorValue v) { var addr = v.Address; if (addr == 0) { return(null); } var arrayCount = v.ArrayCount; if (arrayCount == 0) { return(new DbgRawAddressValue(addr, 0)); } var elemValue = v.GetElementAtPosition(0, out int hr); ulong elemSize = elemValue?.Size ?? 0; ulong elemAddr = elemValue?.Address ?? 0; ulong totalSize = elemSize * arrayCount; if (elemAddr == 0 || elemAddr < addr) { return(null); } return(new DbgRawAddressValue(elemAddr, totalSize)); }