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

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

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

据我所知,我试图转储的特定进程正在以低权限运行,并且我的外部进程正在从管理员 CMD 窗口执行。

[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);

笔记:

  • 我正在刷新、关闭和正确处理文件流
  • MiniDumpWriteDump 返回 false 和 GetLastWin32Error 返回:-2147024597
  • 提到的特定进程(一个 dot net 服务器项目)具有与 FireFox 相同的安全选项(例如,转储适用于 Notepad++ 进程)。
4

1 回答 1

1

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

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

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

于 2015-11-23T14:18:40.643 回答