示例#1
0
        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));
            }
        }
示例#2
0
        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;
            }
        }
示例#3
0
        internal static CIStack NewThreadStack(CIThread aThread, CIRegisterList aRegisters, byte[] aData, uint aAddressOfFirstByte, AddressRange aRange)
        {
            CIStack ret = new CIStack(aRegisters, aData, aAddressOfFirstByte, aRange);

            return(ret);
        }
示例#4
0
        public static CIStack NewStandAlone(CIRegisterList aRegisters, byte[] aData, uint aAddressOfFirstByte, AddressRange aRange)
        {
            CIStack ret = new CIStack(aRegisters, aData, aAddressOfFirstByte, aRange);

            return(ret);
        }