调用MiniDumpWriteDump()来捕获崩溃的最佳位置

时间:2014-06-19 23:31:23

标签: c++ windows exception signals structured-exception

我有一个我正在维护的大型Win32程序,并且我希望在发生错误的情况下自动无条件地生成一个minidump文件。我不能要求客户安装userdump.exe,我也不能要求他们安装visual studio。

这样做有好办法吗?我是否能够生成一个minidump,无论是从我们的断言处理程序调用abort()(这是复杂的),是否有人触及坏内存,或者其他任何非常糟糕的事情发生。

在Posix上,我安装了一个信号处理程序并完成了这项工作。我的理解是Windows上的等效方法是SEH,但我们的程序在很多不同的地方启动了很多线程,所以用__try / __ catch包装每个线程入口点会非常痛苦。

想法?

1 个答案:

答案 0 :(得分:1)

google breakpad 个客户端和服务器组件用于捕获崩溃。你可以使用这个lib

您也可以使用AddVectoredExceptionHandler注册过滤器(可以检查不同的探险类型)回调以处理异常。

我希望它有所帮助