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

时间:2015-11-23 10:17:25

标签: c# minidumpwritedump

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

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

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

  4. 据我所知,我尝试转储的特定进程以低权限运行,我的外部进程正在从管理员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 ++进程上工作)。

1 个答案:

答案 0 :(得分:0)

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

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

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