Exemplo n.º 1
0
        } // end constructor

        public static DbgPseudoRegisterInfo GetDbgPsedoRegisterInfo(DbgEngDebugger debugger,
                                                                    string name)
        {
            return(debugger.ExecuteOnDbgEngThread(() =>
            {
                WDebugRegisters dr = (WDebugRegisters)debugger.DebuggerInterface;

                uint idx;
                StaticCheckHr(dr.GetPseudoIndexByNameWide(name, out idx));

                string tmpName;
                ulong typeMod;
                uint typeId;
                StaticCheckHr(dr.GetPseudoDescriptionWide(idx,
                                                          out tmpName,
                                                          out typeMod,
                                                          out typeId));

                DEBUG_VALUE[] dvs;
                StaticCheckHr(dr.GetPseudoValues(DEBUG_REGSRC.FRAME,
                                                 1,         // count
                                                 idx,       // start
                                                 out dvs));

                return new DbgPseudoRegisterInfo(debugger,
                                                 tmpName,
                                                 dvs[0],
                                                 typeMod,
                                                 typeId,
                                                 DEBUG_ANY_ID);
            }));
        } // end factory
Exemplo n.º 2
0
        } // end constructor

        public static DbgRegisterInfo GetDbgRegisterInfoForIndex(DbgEngDebugger debugger,
                                                                 uint registerIndex)
        {
            return(debugger.ExecuteOnDbgEngThread(() =>
            {
                WDebugRegisters dr = (WDebugRegisters)debugger.DebuggerInterface;
                DEBUG_REGISTER_DESCRIPTION desc;

                string name;
                StaticCheckHr(dr.GetDescriptionWide(registerIndex,
                                                    out name,
                                                    out desc));

                // Don't use dr.GetValue, because it won't respect the context.
                DEBUG_VALUE[] dvs;
                StaticCheckHr(dr.GetValues2(DEBUG_REGSRC.FRAME,
                                            new uint[] { registerIndex },
                                            out dvs));
                return new DbgRegisterInfo(debugger, name, dvs[0], desc, registerIndex);
            }));
        } // end factory
Exemplo n.º 3
0
        protected DbgRegisterSetBase(DbgEngDebugger debugger,
                                     DbgStackFrameInfo stackFrame,
                                     DbgRegisterSetBase baseline)
            : base(debugger)
        {
            if (null == stackFrame)
            {
                throw new ArgumentNullException("stackFrame");
            }

            StackFrame = stackFrame;

            Debugger.ExecuteOnDbgEngThread(() =>
            {
                m_debugSymbols   = (WDebugSymbols)Debugger.DebuggerInterface;
                m_debugRegisters = (WDebugRegisters)Debugger.DebuggerInterface;
                m_debugControl   = (WDebugControl)Debugger.DebuggerInterface;
            });

            Baseline = baseline;
            // We used to lazily retrieve values, but that's no good when the context
            // changes (such as when stepping through code).
            _GetRegisterInfo();
        } // end constructor