public StackFramesStackView(CrashReportView reportView) { foreach (var(ManagedThreadId, OSThreadId, stackFrames, exceptionDetails) in reportView.ThreadsWithExceptions) { Add(new ThreadExceptionDetailView(ManagedThreadId, OSThreadId, stackFrames, exceptionDetails)); } }
public void RenderReport(BaseReportView baseViewModel) { CrashReportView viewModel = (CrashReportView)baseViewModel; var region = new Region(0, 0, 1080, 10800, true); var console = _invocationContext; if (console is ITerminal terminal) { terminal.Clear(); } console.Append(new ContentView("Dump details")); console.Append(new SplitterView()); console.Append(new DumpDetailsView(viewModel)); StackLayoutView stackLayoutView2 = new StackLayoutView { new TemplateStackView("Thread details", new ThreadsDetailView(viewModel)), new TemplateStackView("Threads with exceptions", new StackFramesStackView(viewModel)), new SplitterView() }; var screen = new ScreenView(_consoleRenderer, _invocationContext) { Child = stackLayoutView2 }; screen.Render(region); }
public void RunAnalysis() { viewModel = new CrashReportView { ThreadDetails = GetThreadDetails(), GCMode = GetGCMode(), ClrVersion = GetClrVersion(), DotnetFlavor = GetDotnetFlavor(), MainModuleName = GetMainModule(), ThreadsWithExceptions = GetThreadsWithException(), DumpPath = DumpPath }; }
public ThreadsDetailView(CrashReportView reportView) { Items = reportView.ThreadDetails.ToList(); AddColumn(t => t.OSThreadId, "OS Thread ID"); AddColumn(t => t.ManagedThreadId, "Managed thread ID"); AddColumn(t => t.Address, "Address"); AddColumn(t => t.StackBase, "Stack Base"); AddColumn(t => t.StackLimit, "Stack Limit"); AddColumn(t => t.LockCount, "Lock"); AddColumn(t => t.GCMode, "GC Mode"); AddColumn(t => t.Apartment, "Apartment"); AddColumn(t => t.Finalizer, "Finalizer thread"); AddColumn(t => t.CurrentException, "Exception"); }