woaidongmao

文章均收录自他人博客,但不喜标题前加-[转贴],因其丑陋,见谅!~
随笔 - 1469, 文章 - 0, 评论 - 661, 引用 - 0
数据加载中……

MiniDump小结

1、挂异常链使用SetUnhandledExceptionFilter
2
、在调试状态下无效

3、发生异常的时候为了保留现场堆栈需要冻结进程内其他线程,所使用的操作越少越好。

4、开启另外一个进程对异常进程进行MiniDump

5、如果要分析崩溃地址是否在某个模块,最好在分析进程里做。或者在模块加载时计算模块区域以便在异常时快速定位。判断崩溃是否和某个模块相关,只能通过分析堆栈里的模块来识别,使用StackWalk函数。StackWalk函数里所使用的context参数要使用异常参数里的ContextRecord,这样能分析在崩溃的时候的堆栈,而不会受后面操作的影响。

6、如果希望自己是第一个被调用,可以在挂链之后用APIHook设置SetUnhandledExceptionFilter返回空。

7、在冻结线程的时候,不要打MessageBox,会导致当前线程因为其他线程挂起而阻死。

8、异常除了SetUnHandledExceptionFliter之外,还有AddVectoredExceptionHandler,相对于前者,后者的优点是能够让异常按照链式触发,不会被中间节点断开。但是AddVectoredExceptionHandler无法在2K下使用。。。

 

posted on 2009-10-22 17:27 肥仔 阅读(1102) 评论(0)  编辑 收藏 引用 所属分类: 调试


只有注册用户登录后才能发表评论。
【推荐】超50万行VC++源码: 大型组态工控、电力仿真CAD与GIS源码库
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理