我有一个正在维护的大型Win32程序,并且我希望它能够检测到每当发生不良情况时自动无条件地生成一个minidump文件。我不能要求客户安装userdump.exe,也不能要求他们安装Visual Studio。

有这样做的好方法吗?我希望能够生成一个小型转储,无论是从我们的断言处理程序(很复杂)中调用abort(),还是有人触摸不良的内存,或者发生其他真正不良的事情。

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

有想法吗?

最佳答案

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

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

希望对您有所帮助

关于c++ - 调用MiniDumpWriteDump()捕获崩溃的最佳场所,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/24317811/

10-10 14:14