Пример #1
0
        private static ProcessDetails GetProcessDetails(DiagnosticReportType type)
        {
            if (!IsReportEnabled(type, DiagnosticReportType.Process))
            {
                return(null);
            }

            using (var p = Process.GetCurrentProcess())
            {
                var pVerInfo = p.MainModule.FileVersionInfo;
                var result   = new ProcessDetails
                {
                    PID                   = p.Id,
                    Name                  = p.ProcessName,
                    Started               = p.StartTime,
                    LoadedIn              = ApplicationHelper.GetProcessStartupDuration(),
                    IsInteractive         = Environment.UserInteractive,
                    IsOptimized           = IsOptimized(),
                    Is64Bit               = Environment.Is64BitProcess,
                    IsServerGC            = GCSettings.IsServerGC,
                    IsLargeAddressAware   = ApplicationHelper.IsProcessLargeAddressAware(),
                    WorkingSetInMegaBytes = UnitConverter.BytesToMegaBytes(Environment.WorkingSet),
                    FileVersion           = pVerInfo.FileVersion,
                    ProductVersion        = pVerInfo.ProductVersion,
                    Language              = pVerInfo.Language,
                    Copyright             = pVerInfo.LegalCopyright,
                    OriginalFileName      = pVerInfo.OriginalFilename,
                    FileName              = pVerInfo.FileName,
                    ModuleName            = p.MainModule.ModuleName,
                    ModuleFileName        = p.MainModule.FileName,
                    ProductName           = pVerInfo.ProductName,
                    CommandLine           = Environment.GetCommandLineArgs()
                };

                ThreadPool.GetMinThreads(out var minWrkrs, out var minComplWrkers);
                ThreadPool.GetMaxThreads(out var maxWrkrs, out var maxComplWrkers);
                result.ThreadPoolMinCompletionPortCount = (uint)minComplWrkers;
                result.ThreadPoolMaxCompletionPortCount = (uint)maxComplWrkers;
                result.ThreadPoolMinWorkerCount         = (uint)minWrkrs;
                result.ThreadPoolMaxWorkerCount         = (uint)maxWrkrs;

                result.ThreadCount = (uint)p.Threads.OfType <ProcessThread>().Count();
                return(result);

                string IsOptimized()
                {
                    var executingAssembly = Assembly.GetEntryAssembly();

                    return(executingAssembly == null
                        ? "N/A - Assembly was called from Unmanaged code."
                        : executingAssembly.IsOptimized().ToString());
                }
            }
        }
Пример #2
0
        private static ProcessDetails GetProcessDetails(DiagnosticReportType type)
        {
            if (!IsReportEnabled(type, DiagnosticReportType.Process))
            {
                return(null);
            }

            using (var p = Process.GetCurrentProcess())
            {
                var pVerInfo = p.MainModule.FileVersionInfo;
                return(new ProcessDetails
                {
                    PID = p.Id,
                    Name = p.ProcessName,
                    Started = p.StartTime,
                    LoadedIn = ApplicationHelper.GetProcessStartupDuration(),
                    IsInteractive = Environment.UserInteractive,
                    IsOptimized = IsOptimized(),
                    Is64Bit = Environment.Is64BitProcess,
                    IsLargeAddressAware = ApplicationHelper.IsProcessLargeAddressAware(),
                    WorkingSetInMegaBytes = UnitConverter.BytesToMegaBytes(Environment.WorkingSet),
                    FileVersion = pVerInfo.FileVersion,
                    ProductVersion = pVerInfo.ProductVersion,
                    Language = pVerInfo.Language,
                    Copyright = pVerInfo.LegalCopyright,
                    OriginalFileName = pVerInfo.OriginalFilename,
                    FileName = pVerInfo.FileName,
                    ModuleName = p.MainModule.ModuleName,
                    ModuleFileName = p.MainModule.FileName,
                    ProductName = pVerInfo.ProductName,
                    CommandLine = Environment.GetCommandLineArgs()
                });

                string IsOptimized()
                {
                    var executingAssembly = Assembly.GetEntryAssembly();

                    return(executingAssembly == null
                        ? "N/A - Assembly was called from Unmanaged code."
                        : executingAssembly.IsOptimized().ToString());
                }
            }
        }
Пример #3
0
        private static void AddProcess(StringBuilder builder)
        {
            var maxHeaderLength = ProcessHeaders.Max(h => h.Length);
            var formatter       = "{0,-" + (maxHeaderLength + 1) + "}";

            var sectionIndex = builder.Length;

            using (var p = Process.GetCurrentProcess())
            {
                var pVerInfo = p.MainModule.FileVersionInfo;
                Format(ProcessHeaders[0], p.Id);
                Format(ProcessHeaders[1], p.ProcessName);
                Format(ProcessHeaders[2], p.StartTime.ToString("dd-MM-yyyy HH:mm:ss.fff"));
                Format(ProcessHeaders[3], ApplicationHelper.GetProcessStartupDuration());
                Format(ProcessHeaders[17], Environment.UserInteractive);
                Format(ProcessHeaders[4], IsOptimized());
                Format(ProcessHeaders[5], Environment.Is64BitProcess);
                Format(ProcessHeaders[6], ApplicationHelper.IsProcessLargeAddressAware());
                Format(ProcessHeaders[16], UnitConverter.BytesToMegaBytes(Environment.WorkingSet).ToString("N0") + "MB");
                Format(ProcessHeaders[12], pVerInfo.FileVersion);
                Format(ProcessHeaders[13], pVerInfo.ProductVersion);
                Format(ProcessHeaders[14], pVerInfo.Language);
                Format(ProcessHeaders[15], pVerInfo.LegalCopyright);
                Format(ProcessHeaders[10], pVerInfo.OriginalFilename);
                Format(ProcessHeaders[11], pVerInfo.FileName);
                Format(ProcessHeaders[7], p.MainModule.ModuleName);
                Format(ProcessHeaders[8], p.MainModule.FileName);
                Format(ProcessHeaders[9], pVerInfo.ProductName);

                var cmdArgs = Environment.GetCommandLineArgs();
                Format(ProcessHeaders[18], cmdArgs[0]);

                for (var i = 1; i < cmdArgs.Length; i++)
                {
                    builder
                    .Append(LinePrefix)
                    .Append(Space).Append(Space)
                    .AppendFormat(formatter, string.Empty)
                    .Append(Space).Append(Space)
                    .AppendLine(cmdArgs[i]);
                }

                var maxLineLength = GetMaximumLineLength(builder, sectionIndex);
                builder.Insert(sectionIndex, GetSeperator("Process", maxLineLength));

                void Format(string key, object value)
                {
                    builder
                    .Append(LinePrefix)
                    .Append(Dot)
                    .Append(Space)
                    .AppendFormat(formatter, key)
                    .Append(Colon)
                    .Append(Space)
                    .AppendLine(value.ToString());
                }

                string IsOptimized()
                {
                    var executingAssembly = Assembly.GetEntryAssembly();

                    return(executingAssembly == null
                        ? "N/A - Assembly was called from Unmanaged code."
                        : executingAssembly.IsOptimized().ToString());
                }
            }
        }