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