- 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
VC下发布的Release版程序的异常捕捉VC下发布的Release版程序的异常捕捉- -?????????????????????????????????????? ?寻找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文件定位发生异常的代码行编译得到的map文件可以用文本方式打开,大致是这样的格式:(括号内是PomeloWu填加的注释)0729???????????????? (←工程名)?Timestamp is 42e9bc51 (Fri Jul 29 14:19:13 2005)??? (←时间戳)?Preferred load address is??????? (←基址)……(Data段描述,省略)Address???????? Publics by Value????????????? Rva+Base???? Lib:Object0001????? ?_GetBaseMessageMap@C0729App@@KGPBUAFX_MSGMAP@@XZf?? 0729 dot obj……(↑这一行开始是函数信息,下面省略)Line numbers for .\Release\ShowDlg.obj(C:\0729\ShowDlg.cpp) segment .text??? 24 0001:00003f90??? 28 0001:00003fce??? 29 0001:00003fd1??? 30 0001:00003fd4……(行号信息,前面的数字是行号,后一个数字是偏移量,下面省略)? 在获得程序异常的地址以后,首先通过函数信息部分定位出错的OBJ和函数。做法是用获得的异常地址与Rva+Base栏地址进行比较(Rva,偏移地址;Base,基址)。找到最后一个比获得的异常地址小的那个函数,那就是出错的函数。? 之后,用获得的异常地址减去该函数的Rva+Base,就得到了异常行代码相对于函数起始地址的偏移。在“Line number for”部分找到相对应的模块,并把其后的行号信息与上面减得的偏移量对比,找到最接近的一个,前面的行号大致就是目标行了。?? 重剑点评:上面这两行灰掉的有问题,看下面的计算方法吧!?怎样使用Map文件进行查错首先必须生成程序的 MAP 文件。什么是 MAP 文件?简单地讲, MAP 文件是程序的全局符号、源文件和代码行号信息的唯一的文本表示方法,它可以在任何地方、任何时候使用,不需要有额外的程序进行支持。而且,这是唯一能找出程序崩溃的地方的救星。好吧,既然 MAP 文件如此神奇,那么我们应该如何生成它呢?在 VC 中,我们可以按下 Alt+F7 ,打开“Project Settings”选项页,选择 C/C++ 选项卡,并在最下面的 Project Options 里面输入:/Zd,然后要选择 Link 选项卡,在最下面的 Project Options 里面输入: /mapinfo:lines和 /map:PROJECT_NAME.map。最后按下 F7 来编译生成 EXE 可执行文件和 MAP 文件。在此我先解释一下加入的参数的含义:/Zd表示在编译的时候生成行信息/map[:filename] 表示生成 MAP 文件的路径和文件名/mapinfo:lines表示生成 MAP 文件时,加入行信息/mapinfo:exports表示生成 MAP 文件时,加入 exported functions (如果生成的是 DLL 文件,这个选项就要加上)OK,通过上面的步骤,我们已经得到了 MAP 文件,那么我们该如何利用它呢?让我们从简单的实例入手,请打开你的 VC ,新建这样一个文件:01 //*******************************************************
您可能关注的文档
最近下载
- 中国专利奖申报书.docx VIP
- 约翰克兰John Crane SE系列 培训指南.pdf VIP
- 结构化面试护士50道面试题附答案.docx VIP
- 山东省三级老年病医院基本标准(2023).docx VIP
- 统编版小学三年级上册语文精品课件 司马光.ppt VIP
- ancient-chinese-philosophy中国古代哲学.ppt VIP
- 4.3海-气相互作用课件 高中地理人教版(2019)选择性必修一.pptx VIP
- 砂土地基钢板桩施工振动锤选型及应用-华北交通工程.pdf
- 10SG614-2 砌体填充墙构造详图(二)(与主体结构柔性连接).pdf VIP
- 超声检测技术.ppt VIP
文档评论(0)