Beispiel #1
0
        public SummaryView(MiniDumpFile miniDumpFile)
            : this()
        {
            _miniDumpFile = miniDumpFile;

            #region Header data

            MiniDumpHeader header = _miniDumpFile.ReadHeader();

            if (header == null)
            {
                return;
            }

            txtDateTime.Text = header.TimeDateStamp.ToString();
            txtFlags.Text    = header.Flags.ToString();
            lblAvailableStreamsHeading.Text = $"Available Streams ({header.DirectoryEntries.Count} items)";

            foreach (MiniDumpDirectory directoryEntry in header.DirectoryEntries.OrderBy(entry => entry.StreamType.ToString()))
            {
                ListViewItem newItem = new ListViewItem(directoryEntry.StreamType.ToString());
                newItem.Tag = directoryEntry;
                newItem.SubItems.Add(Formatters.FormatAsMemoryAddress(directoryEntry.Location.Rva));
                newItem.SubItems.Add(directoryEntry.Location.DataSizePretty);

                listView1.Items.Add(newItem);
            }
            #endregion

            #region Module stream
            MiniDumpModule[] modules = _miniDumpFile.ReadModuleList();

            if (modules.Length > 1)
            {
                this.txtMainModule.Text = modules[0].PathAndFileName;
            }
            #endregion

            #region SystemInfo stream
            MiniDumpSystemInfoStream systemInfoStream = _miniDumpFile.ReadSystemInfo();

            if (systemInfoStream != null)
            {
                this.txtOperatingSystem.Text = systemInfoStream.OperatingSystemDescription;

                if (!string.IsNullOrEmpty(systemInfoStream.CSDVersion))
                {
                    this.txtOperatingSystem.Text += $" ({systemInfoStream.CSDVersion})";
                }
            }
            #endregion
        }