【发布时间】:2012-12-18 14:21:10
【问题描述】:
我想使用 MiniDumpWriteDump 为我的应用程序生成崩溃日志。 Microsoft 建议从另一个进程执行转储,这是我正在尝试做的。我遇到的问题是将PEXCEPTION_INFORMATION 结构从父进程传递给子进程。问题是父进程拥有这个结构的内存,我需要把它交给孩子。我找到了这篇文章
How do I get at the exception information when using MiniDumpWriteDump out-of-process?
并且接受的答案是 “指针在看门狗进程的上下文中无效并不重要。” 这让我相信我可以简单地传递 PEXCEPTION_INFORMATION 指针我的未处理异常过滤器接收到子进程,Windows 将从父进程读取它。这没有发生,所以我真的不知道该怎么做,此时子进程崩溃,大概是因为 Windows 试图访问这个内存,就好像它属于孩子一样。我显然在这里遗漏了一些东西,但我不确定是什么。我使用管道将数据发送到子进程,上述问题的答案说使用内存映射文件有效,但我不确定为什么,或者我是否正确理解了答案。
【问题讨论】:
-
那么当您尝试使用内存映射文件时发生了什么?
-
@HansPassant 我没有尝试过,因为我不确定内存映射是什么文件,或者它真的会做什么。
-
@user:对此的任何更新。我正在尝试使用文件映射来做到这一点,但传递异常信息的类似问题。我在这里登陆stackoverflow.com/questions/624691/…,上面写着“如果你使用共享内存,你不能传递指针。指针将包含虚拟地址,这与一个进程不同。你必须交换偏移值,基于共享内存区域的开始。”我被困在中间了。
-
@ananth 我没有深入研究它,也没有找到解决方法。我能想到的唯一方法是对结构进行深层复制,但肯定有更简单的方法。
标签: windows visual-c++ unhandled-exception minidump