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"); } } }
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)); }