public static int Main()

in src/Program.cs [62:99]


        public static int Main(string[] args)
        {
            if (args.Length < 1 ||
                !int.TryParse(args[0], NumberStyles.Integer, CultureInfo.InvariantCulture, out var pid))
            {
                return PrintUsageError();
            }

            if (RuntimeInformation.IsOSPlatform(OSPlatform.Windows) && Environment.Is64BitOperatingSystem && Environment.Is64BitProcess)
            {
                var targetProcess = Process.GetProcessById(pid);
                if (IsWow64Process(targetProcess.Handle, out var targetProcessIsWow64) && targetProcessIsWow64)
                    return RerunMainAs32BitProcess(args);
            }
            
            args = args.Skip(1).ToArray(); // skip pid

            var threadDumpDir = Environment.GetEnvironmentVariable(ThreadDumpDirEnvVar);
            if (!string.IsNullOrEmpty(threadDumpDir) && !Directory.Exists(threadDumpDir))
            {
                Console.Error.WriteLine($"Path [{threadDumpDir}] in THREAD_DUMP_DIR environment variable not exists or not directory");
                return 1;
            }

            var processDumpParameters = TryParseProcessDumpParameters(args, pid);
            if (processDumpParameters != null)
            {
                return ToResult(DumpProcess(processDumpParameters));
            }

            var threadDumpParameters = TryParseThreadDumpParameters(args, pid, threadDumpDir);
            if (threadDumpParameters == null)
            {
                return PrintUsageError();
            }

            return ToResult(DumpStackTraces(threadDumpParameters));
        }