Esempio n. 1
0
        protected override void ProcessRecord()
        {
            base.ProcessRecord();

            try
            {
                if (Increment)
                {
                    var ctx = Debugger.GetCurrentDbgEngContext();
                    _Worker(ctx.FrameIndex + 1, "CannotIncrementPastTopOfStack");
                    DbgProvider.SetAutoRepeatCommand(".f+");
                }
                else if (Decrement)
                {
                    var ctx = Debugger.GetCurrentDbgEngContext();
                    _Worker(ctx.FrameIndex - 1, "CannotDecrementPastBottomOfStack");
                    DbgProvider.SetAutoRepeatCommand(".f-");
                }
                else
                {
                    _Worker(FrameNumber, "StackFrameOutsideOfActualStack");
                }
            }
            catch (DbgProviderException dpe)
            {
                WriteError(dpe);
            }

            DbgProvider.SetLocationByDebuggerContext();
        } // end ProcessRecord()
        protected void RebuildNamespaceAndSetLocationBasedOnDebuggerContext(bool outputRegisters,
                                                                            DbgRegisterSetBase baselineRegisters)
        {
            string newCurrentPath = DbgProvider.SetLocationByDebuggerContext();

            if (outputRegisters && (null != newCurrentPath))
            {
                // This basically just removes the leading whack.
                string providerPath = SessionState.Path.GetUnresolvedProviderPathFromPSPath(newCurrentPath);
                var    regSet       = DbgProvider.GetRegisterSetForPath(providerPath, baselineRegisters);
                if (null != regSet)
                {
                    // TODO: Set ReadDbgAssemblyCommand.NextAddrToDisassemble here? (and the others)
                    SafeWriteObject(regSet);
                }
            }
        } // end SetLocationBasedOnDebuggerContext()