• 4508阅读
  • 1回复

工业自动化软件设计 之六 windows程序异常捕获与处理 [复制链接]

上一主题 下一主题
离线myer
 

只看楼主 倒序阅读 楼主  发表于: 2011-12-31
       今天插个题外话,怎样加快程序调试,在程序非法异常的时候,记录异常代码的位置。
       程序免不了bug,尤其在多线程的程序中,有时候程序异常退出很不易重现,为了重现bug,夜以继日的测试,下面介绍一个简单的方法,捕获未处理异常,然后视软件设计者意图,自动重启,或者等待处理,或者其它都自便。
       异常发生时,同时保存两个log文件,一个为text格式,指出错误发生所在代码行,一个为dump调试文件,MiniDump格式,可以用Visual studio打开重现当时的堆栈状况。
       原理:调用函数SetUnhandledExceptionFilter,设置未捕获异常的回调函数;
                 调用函数MiniDumpWriteDump,生成可调试二进制文件;
                 调用函数GetLogicalAddress等,生成text文件,记录当时堆栈情况。
        下图为写0异常被捕获的情形:清楚的指出,异常代码所在位置:exceptiontest.cpp的第16行:window.open('http://www.qtcn.org/bbs/attachment/Mon_1112/17_534_069661f9ed8edef.png?20');" style="max-width:700px;max-height:700px;" onload="if(is_ie6&&this.offsetWidth>700)this.width=700;" >

一个例子,和更详细的描述,见另一个帖子:
http://www.qtcn.org/bbs/read-htm-tid-47201-displayMode-1.html
http://user.qzone.qq.com/56430808
离线inside
只看该作者 1楼 发表于: 2012-01-01
希望能够提供  pdump的代码
楼主写的功能很全面 希望公开出来 大家一起完善 。。我就不逆 了。或者单独发我一份  909152171  谢谢
快速回复
限100 字节
 
上一个 下一个