我想让我的代码为未处理的异常创建转储。
我曾想过使用SetUnhandledExceptionFilter。但是在什么情况下SetUnhandledExceptionFilter可能无法按预期工作。例如,当堆栈上发生缓冲区溢出时,堆栈损坏问题怎么办?
在这种情况下会发生什么?是否有任何其他解决方案将始终有效?
最佳答案
我已经使用SetUnhandledExceptionFilter已有一段时间了,并且没有注意到没有正确捕获的任何崩溃/问题。并且,如果未在代码中的某处处理异常,则该异常应由过滤器处理。从MSDN关于过滤器...
没有提及以上仅适用于某些类型的异常。
我不使用过滤器来创建转储文件,因为该应用程序使用Microsoft WER系统来报告崩溃。而是,该筛选器用于提供收集两个附加文件的机会,这些附加文件将附加到Microsoft将收集的崩溃报告(和转储文件)中。
这是Microsoft的崩溃报告仪表板示例,其中已删除模块名称。
您会看到收集了各种各样的崩溃类型,包括堆栈缓冲区溢出。
关于exception-handling - SetUnhandledExceptionFilter什么时候不起作用?例如堆栈损坏?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/29274649/