来自另一个进程的MiniDumpWriteDump

问题描述 投票:1回答:1

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

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

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

windows visual-c++ unhandled-exception minidump
1个回答
0
投票

调试要转储的进程。

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

可以通过WaitforDebugEventEx从EXCEPTION_DEBUG_EVENT获取ExceptionRecord。

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

© www.soinside.com 2019 - 2024. All rights reserved.