寻找Release版程发生异常退出的地方比Debug版麻烦得多。发生异常的时候windows通常会弹出一个错误对话框,点击详细信息,我们能获得出错的地址和大概的出错信息,然后可以用以下办法分析我们的程序。
一. 用MAP文件定位异常代码位置。
1.如何生成map文件
打开“Project →Project Settings”,选择 C/C++ 选项卡,在“Debug Info”栏选择“Line Numbers Only”(或者在最下面的 Project Options 里面输入:/Zd),然后要选择 Link 选项卡,选中“Generate mapfile”复选框,并再次编辑 Project Options,输入:/mapinfo:lines,以便在 MAP 文件中加入行信息。然后编译工程则可以在输出目录得到同名的.map文件。
2. 使用map文件定位发生异常的代码行
(本文来源于图老师网站,更多请访问http://m.tulaoshi.com/bianchengyuyan/)编译得到的map文件可以用文本方式打开,大致是这样的格式:(括号内是PomeloWu填加的注释)
0729 (←工程名)
Timestamp is 42e9bc51 (Fri Jul 29 14:19:13 2005) (←时间戳)
Preferred load address is 00400000 (←基址)
……(Data段描述,省略)
(本文来源于图老师网站,更多请访问http://m.tulaoshi.com/bianchengyuyan/)Address Publics by Value Rva+Base Lib:Object
0001:00000000 ?_GetBaseMessageMap@C0729App@@KGPBUAFX_MSGMAP@@XZ 00401000 f 0729.obj
……(↑这一行开始是函数信息,下面省略)
Line numbers for .ReleaseShowDlg.obj(C: