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

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

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

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

据我所知,我尝试转储的特定进程以低权限运行,我的外部进程正在从管理员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
  • 提到的特定进程(点网服务器项目)具有与FireFox相同的安全选项(例如,转储在Notepad ++进程上工作)。

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

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

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