我想使用 MiniDumpWriteDump 为我的应用程序生成崩溃日志。 Microsoft 建议从另一个进程执行转储,这正是我正在尝试做的。我遇到的问题是将 PEXCEPTION_INFORMATION
结构从父进程传递到子进程。问题是父进程拥有这个结构的内存,我需要把它给 child 。我找到了这篇文章
How do I get at the exception information when using MiniDumpWriteDump out-of-process?
接受的答案是 “指针在看门狗进程的上下文中无效并不重要。” 这让我相信我可以简单地传递 PEXCEPTION_INFORMATION
我未处理的异常过滤器接收到子进程的指针,Windows 将从父进程读取它。这没有发生,所以我真的不知道该怎么做,目前子进程崩溃了,大概是因为 Windows 试图访问这个内存,就好像它属于 child 一样。我显然在这里遗漏了一些东西,但我不确定是什么。我使用管道将数据发送到子进程,上述问题的答案是使用内存映射文件有效,但我不太确定为什么,或者我是否正确理解了答案。
最佳答案
调试要转储的进程。
typedef struct _EXCEPTION_POINTERS {
PEXCEPTION_RECORD ExceptionRecord;
PCONTEXT ContextRecord;
} EXCEPTION_POINTERS, *PEXCEPTION_POINTERS;
ExceptionRecord可以通过WaitforDebugEventEx从EXCEPTION_DEBUG_EVENT得到。
ContextRecord可以通过OpenThread和GetThreadContext从DebugEvent获取threadid
关于windows - 来自另一个进程的 MiniDumpWriteDump,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13934957/