internal CIStackEntry(CIStack aParent, StackOutputEntry aEntry) : base(aParent.Container, aParent) { iEntry = aEntry; // If the stack entry references a symbol then associate it with // the parent dictionary immediately. if (aEntry.Symbol != null) { ICISymbolManager symbolManager = this.SymbolManager; CISymbol symbol = symbolManager.SymbolDictionary.Register(aEntry.Symbol); this.AddChild(symbol); base.Trace(string.Format("[CIStackEntry] address: 0x{0:x8}, symbol: {1}, symId: {2}", iEntry.Data, symbol.Symbol, symbol.Id)); } }
public CIStackBuilder(CIStack aStack, DbgEngine aDebugEngine) { iStack = aStack; iStackEngine = new StackEngine(aDebugEngine); iStackEngine.AddressInfo.Pointer = aStack.PointerValue; iStackEngine.AddressInfo.Range = aStack.Range; iStackEngine.Registers = aStack.Registers; iStackEngine.DataSource = aStack.RawSourceData; // Get the code segments for the process bool isThreadStack = aStack.IsThreadAvailable; if (isThreadStack) { CIProcess process = OwningProcess; System.Diagnostics.Debug.Assert(process != null); // Seed stack engine with relevant code segments iStackEngine.CodeSegments = process.CodeSegments; } }
internal static CIStack NewThreadStack(CIThread aThread, CIRegisterList aRegisters, byte[] aData, uint aAddressOfFirstByte, AddressRange aRange) { CIStack ret = new CIStack(aRegisters, aData, aAddressOfFirstByte, aRange); return(ret); }
public static CIStack NewStandAlone(CIRegisterList aRegisters, byte[] aData, uint aAddressOfFirstByte, AddressRange aRange) { CIStack ret = new CIStack(aRegisters, aData, aAddressOfFirstByte, aRange); return(ret); }