MiniDumpWriteDump (C#) 为特定进程生成零长度转储文件

MiniDumpWriteDump (C#) produces zero length dump files for specific process

  1. 在特定进程中执行 MiniDumpWriteDump 提供健康的转储文件。

  2. 从外部进程执行 MiniDumpWriteDump,其中 hProcess 和 processId 指向提到的特定进程,提供零长度转储文件

  3. 与 #2 相同,例如仅指向 FireFox 提供健康的转储文件

据我所知,我试图转储的具体进程是 运行 低权限,我的外部进程是从管理员 CMD window 执行的。

[DllImport("dbghelp.dll",
            EntryPoint = "MiniDumpWriteDump",
            CallingConvention = CallingConvention.Winapi,
            CharSet = CharSet.Unicode,
            ExactSpelling = true,
            SetLastError = true)]
        private static extern bool MiniDumpWriteDump(IntPtr hProcess,
            uint processId,
            SafeHandle hFile,
            uint dumpType,
            IntPtr expParam,
            IntPtr userStreamParam,
            IntPtr callbackParam);

备注:

好的..找到了解决方案..

外部进程项目是为 "AnyCPU" 平台构建的(并且由于它不只执行 64 位命令,因此 运行 用于 32 位)。将其设置为 x64 可以转储另一个 64 位进程。

我建议遇到此问题的任何人创建单独的项目,一个用于 32 位,一个用于 64 位。