public void UpdateItem()
            {
                this.ImageIndex = Index == 0 ? 1 : (Frame == DebuggerBase.Instance.CurrentFrame ? 2 : 0);

                if (Frame.IsExternal)
                {
                    SubItems[0].Text = DebuggerBase.Instance.MuiProcessor.GetString("CallStack.Messages.ExternalCode");
                    SubItems[1].Text = "-";
                    SubItems[2].Text = "-";
                    ForeColor = Color.Gray;
                }
                else
                {
                    SubItems[0].Text = string.Format("{0} ({1} {2:X8})", Frame.Function.Name, Path.GetFileName(Frame.Function.Module.Name), Frame.Function.Token.GetToken());
                    uint offset = Frame.GetOffset();
                    SubItems[1].Text = offset.ToString("X");
                    if (Frame.IsUserCode)
                    {
                        ForeColor = Color.Black;
                        SourceRange = Frame.Function.Symbols.GetSequencePoint(offset);
                        if (SourceRange != null)
                        {
                            SubItems[2].Text = string.Format("{0}:{1},{2}",
                                SourceRange.FilePath,
                                SourceRange.Line,
                                SourceRange.Column);
                        }
                        else
                        {
                            SubItems[2].Text = string.Format("Offset 0x{3:X}", 
                                Frame.Function.Module.Name,
                                Frame.Function.Token.GetToken(),
                                Name,
                                offset);
                        }
                    }
                    else
                    {
                        ForeColor = Color.Gray;
                        SourceRange = null;
                        SubItems[2].Text = DebuggerBase.Instance.MuiProcessor.GetString("CallStack.Messages.NonUserCode");
                    }
                }
            }
示例#2
0
 public SourceRangeEventArgs(SourceRange range)
 {
     Range = range;
 }
        private void TargetObject_Paused(object sender, DebuggerPauseEventArgs e)
        {
            var frame = e.AppDomain.Process.CurrentFrame;

            if (frame.Function.Symbols != null)
                _currentRange = frame.Function.Symbols.GetSequencePoint(frame.GetOffset()); 
            else
                _currentRange = null;

            DebuggerBase.Instance.DispatchPaused(new ControllerPauseEventArgs(e.Controller, e.Thread, e.Reason));
            OnPaused(new ControllerPauseEventArgs(e.Controller, e.Thread, e.Reason));
        }
示例#4
0
 public SourceRangeEventArgs(SourceRange range)
 {
     Range = range;
 }