在程序崩溃时获取当前栈上的信息以方便事后分析崩溃原因是极好的做法,下面介绍一下捕获崩溃并转储为minidump的方法
使用SEH捕获异常的方法
红框中的代码是最关键的,如果少了这段代码,使用windbg分析出来的栈会是错误的
此种方法有一个局限是SEH会有 error C2712 无法在要求对象展开的函数中使用__try 这样的编译错误,使用场景极为受限
使用注册未处理的异常处理句柄的方法
即去掉上一种方法中的__try __except,而取而代之以注册未处理异常处理句柄的方法
SetUnhandledExceptionFilter((LPTOP_LEVEL_EXCEPTION_FILTER)ExpFlr);
与上面方法不同的是,在win7下,会弹出此提示框