标题:windows程序异常捕获与处理 例子
作者:myer
日期:2011-12-31 15:51
内容:
程序免不了bug,尤其在多线程的程序中,有时候程序异常退出很不易重现,为了重现bug,夜以继日的测试,下面介绍一个简单的方法,捕获未处理异常,然后视软件设计者意图,自动重启,或者等待处理,或者其它都自便。
异常发生时,同时保存两个log文件,一个为text格式,指出错误发生所在代码行,一个为dump调试文件,MiniDump格式,可以用Visual studio打开重现当时的堆栈状况。下图为例子程序,点击按钮,产生一个写0地址的异常,这是为处理的情况:
下图为debug版本的程序,处理异常,直接显示异常代码位置,exceptiontest.cpp的第16行:
下两图为release版本,由于没有pdb信息,指出异常代码位置 0001:000025cd,打开map文件很方便的看出,程序执行到了on_pushButton_clicked函数
如果需要进一步了解,欢迎关注qtcn论坛,或者联系我:QQ 56430808 。
完。
#1 [inside 12-31 23:41]
希望能够提供pdump的代码
#2 [inside 12-31 23:45]
WheatyExceptionReport::WheatyExceptionReport(void) .text 000006C4 00000029 R . . . B . .
WheatyExceptionReport::~WheatyExceptionReport(void).text 000006F4 00000017 R . . . B . .
WheatyExceptionReport::GenerateMiniDumps(_EXCEPTION_POINTERS *).text 00000714 00000219 R . . . B . .
WheatyExceptionReport::WheatyUnhandledExceptionFilter(_EXCEPTION_POINTERS *) .text 00000934 000002EA R . . . B T .
WheatyExce ..
#3 [chisely 01-02 09:46]
不是qt的异常处理啊