来自另一个进程的MiniDumpWriteDump

时间:2012-12-18 14:21:10

标签: windows visual-c++ unhandled-exception minidump

我想使用MiniDumpWriteDump为我的应用程序生成崩溃日志。 Microsoft建议从另一个进程执行转储,这正是我想要做的。我遇到的问题是将PEXCEPTION_INFORMATION结构从父进程传递给子进程。问题是父进程拥有此结构的内存,我需要将其提供给子进程。我找到了这篇文章

How do I get at the exception information when using MiniDumpWriteDump out-of-process?

接受的答案说“指针在监视程序进程的上下文中无效并不重要。”让我相信我可以简单地通过{{1}我的未处理的异常过滤器接收到子进程的指针,并且windows将从父进程读取它。这种情况没有发生,所以我真的不知道该怎么做,在孩子进程崩溃的那一刻,大概是因为windows试图访问这个内存,如果它属于孩子。我显然在这里遗漏了一些东西,但我不确定是什么。我使用管道将数据发送到子进程,上面问题的答案说使用内存映射文件有效,但我不确定原因,或者我是否正确理解答案。

1 个答案:

答案 0 :(得分:0)

调试要转储的进程。

typedef struct _EXCEPTION_POINTERS {
    PEXCEPTION_RECORD ExceptionRecord;
    PCONTEXT ContextRecord;
} EXCEPTION_POINTERS, *PEXCEPTION_POINTERS;

可以通过WaitforDebugEventEx从EXCEPTION_DEBUG_EVENT获取ExceptionRecord。

ContextRecord可以通过OpenThread和GetThreadContext以及DebugEvent中的threadid来获取