我想使用MiniDumpWriteDump为我的应用程序生成崩溃日志。Microsoft建议从另一个进程执行转储,这正是我所要做的。我遇到的问题是将PEXCEPTION_INFORMATION结构从父进程传递给子进程。问题是父进程拥有这个结构的内存,我需要将它给子进程。我找到了这个职位
How do I get at the exception information when using MiniDumpWriteDump out-of-process?
被接受的回答说:“指针在看门狗进程的上下文中无效并不重要。”这使我相信,我只需将未处理的异常筛选器接收到的PEXCEPTION_INFORMATION指针传递给子进程,windows就会从父进程读取它。这并没有发生,所以我不知道该做什么,此时子进程崩溃,大概是因为windows试图访问这个内存,就像它属于子进程一样。我显然遗漏了什么,但我不确定是什么。我使用管道向子进程发送数据,上面问题的答案是使用内存映射文件工作,但我不太确定为什么,或者我是否正确地理解了答案。
发布于 2019-04-18 07:24:41
调试要转储的进程。
typedef struct _EXCEPTION_POINTERS {
PEXCEPTION_RECORD ExceptionRecord;
PCONTEXT ContextRecord;
} EXCEPTION_POINTERS, *PEXCEPTION_POINTERS;ExceptionRecord可以通过WaitforDebugEventEx从EXCEPTION_DEBUG_EVENT获得。
ContextRecord可以由OpenThread和GetThreadContext从DebugEvent获得
https://stackoverflow.com/questions/13934957
复制相似问题