首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在使用MiniDumpWriteDump进程之外时,如何获取异常信息?

在使用MiniDumpWriteDump进程之外时,如何获取异常信息?
EN

Stack Overflow用户
提问于 2012-11-27 18:46:41
回答 1查看 3.2K关注 0票数 8

当使用MiniDumpWriteDump函数在Windows上创建进程的核心转储时,建议(例如,这里这里)从另一个“看门狗”进程运行MiniDumpWriteDump,因为在同一进程中调用它很可能无法工作。

目前,我们的应用程序正在对一个未处理的异常(我们通过一个看门狗线程)调用它。由于我们有时有问题,它不工作,我们想把它转移到一个单独的过程。

现在,给另一个进程发送开始写入转储的信号很简单(只需使用事件、信号量,您可以给它命名),但是如何将我为SetUnhandledExceptionFilter注册的回调函数获得的SetUnhandledExceptionFilter信息传递给另一个进程,以便将其传递给MiniDumpWriteDumpExceptionParam参数?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-11-27 19:50:03

您还需要MINIDUMP_EXCEPTION_INFORMATION.ThreadId值。最简单的方法,也是我让它工作的方式,是使用一个内存映射文件来同时传输ThreadId和ExceptionPointers。还有一个被命名的事件来唤醒看门狗。指针在看门狗进程的上下文中无效并不重要。

在监视进程中使用CreateFileMapping + MapViewOfFile作为初始化的一部分,在看门狗中使用OpenFileMapping + MapViewOfFile。然后,SetUnhandledExceptionFilter应该只调用GetCurrentThreadId(),并将tid和pExcept复制到内存映射的文件视图中,调用SetEvent()来唤醒看门狗并永远阻塞,直到看门狗终止为止。

票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13590980

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档