VC下发布的Release版程序的异常捕捉

2016-02-19 18:42 5 1 收藏

有了下面这个VC下发布的Release版程序的异常捕捉教程,不懂VC下发布的Release版程序的异常捕捉的也能装懂了,赶紧get起来装逼一下吧!

【 tulaoshi.com - 编程语言 】

寻找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文件。

(本文来源于图老师网站,更多请访问http://www.tulaoshi.com/bianchengyuyan/)

2. 使用map文件定位发生异常的代码行

编译得到的map文件可以用文本方式打开,大致是这样的格式:(括号内是PomeloWu填加的注释)

0729                 (←工程名)

 Timestamp is 42e9bc51 (Fri Jul 29 14:19:13 2005)    (←时间戳)  

 Preferred load address is 00400000         (←基址)  

……(Data段描述,省略)

 Address         Publics by Value              Rva+Base     Lib:Object  

(本文来源于图老师网站,更多请访问http://www.tulaoshi.com/bianchengyuyan/)

0001:00000000       ?_GetBaseMessageMap@C0729App@@KGPBUAFX_MSGMAP@@XZ 00401000 f   0729.obj
……(↑这一行开始是函数信息,下面省略) 

Line numbers for .ReleaseShowDlg.obj(C:

来源:http://www.tulaoshi.com/n/20160219/1618682.html

延伸阅读
⑴ 函数原型: UINT Win Exec(LPCSTR lpCmdLine, UINT uCmdShow); ⑵ 参数: lpCmdLine:指向一个空结束的字符串,串中包含将要执行的应用程序的命令行(文件名加上可选参数)。 uCmdShow:定义Windows应用程序的窗口如何显示,并为CreateProcess函数提供STARTUPINFO参数的wShowWindow成员的值。 ⑶ 返回值: 若函数调用成功,则返回...
用VC实现支持多语言的程序 作者:新奥特视频公司 穆学峰 最近要做个程序要求有中文和英文两个版本,因此要把应用程序的资源文件COPY一份英文的。 方法一 :在资源中用InsertCopy COPY一份资源如图 方法二 :直接用文本编辑器编辑rc文件 ...
处理 C++ 中的异常会在语言级别上碰到少许隐含限制,但在某些情况下,您可以绕过它们。学习各种利用异常的方法,您就可以生产更可靠的应用程序。保留异常
我们写程序的时候都希望能写出一个没有任何Bug的程序,期望在任何情况下都不会发生程序崩溃。不过理想是丰满的,现实是骨感的。没有一个程序员能保证自己写的程序绝对不会出现异常崩溃。特别是针对用户数达到几十万几百万的程序,当你用户数达到一定数量级后,就算你的程序出现个别异常崩溃情况也不用惊讶。 既然我们写的程序都有可能发生异常...
    在很多情况下,我们需要将当前运行的程序重新运行;此时我们就必须在程序关闭后立即重新运行程序,形成新的进程; 实例代码:     1、重启按钮事件中添加代码:     g_bIsRunAgain=true;//控制是否重新运行的变量     this-SendMessage(WM_CLOSE);     2、在On...

经验教程

167

收藏

61
微博分享 QQ分享 QQ空间 手机页面 收藏网站 回到头部