学海网 文档下载 文档下载导航
设为首页 | 加入收藏
搜索 请输入内容:  
 导航当前位置: 文档下载 > 所有分类 > IT/计算机 > 定位程序崩溃点儿

定位程序崩溃点儿

作为程序员,平时最担心见到的事情就是程序发生了崩溃,无论是指针越界还是非法操作,都将给我们的应用系统造成巨大的损失。但在一个大型系统的测试过程中,初期出现程序崩溃似乎成了不可避免的事。其实测试中出现程序崩溃并不可怕,反而是测试的成功。我们更为关心的是程序中的哪一行导致了系统崩溃,这样我们才能有针对性的进行改正。

作为程序员,平时最担心见到的事情就是程序发生了崩溃,无论是指针越界还是非法操作,都将给我们的应用系统造成巨大的损失。但在一个大型系统的测试过程中,初期出现程序崩溃似乎成了不可避免的事。其实测试中出现程序崩溃并不可怕,反而是测试的成功。我们更为关心的是程序中的哪一行导致了系统崩溃,这样我们才能有针对性的进行改正。
  在VC中,我们可以利用出现程序崩溃时VC的自动跳转,定位到出错代码行。但在大量的压力测试时,尤其是多线程测试时,同时出现几十个错,这时VC本身的出错跳转往往会失灵。
  在这里我们介绍一种辅助查找程序崩溃代码行的好方法,它的核心就是利用编译时生成MAP文件中的信息来定位代码行。
下面就开始我们的介绍。
  首先我们必须生成程序的MAP文件。那么什么是 MAP 文件呢?简单地讲, MAP 文件是程序的全局符号、源文件和代码行号信息的唯一的文本表示方法,是整个程序工程信息的静态文本。它可以在任何地方、任何时候使用,不需要有额外的程序进行支持,仅仅通过一个文本阅读工具如Ultra Edit就可以打开了。而且,这是唯一能找出程序崩溃代码行的救星。
  那么我们应该如何生成MAP文件呢?在 VC 中,我们可以按下 Alt+F7,打开“Project Settings”选项页,选择 C/C++ 选项卡,并在最下面的 Project Options 里面输入:/Zd ,然后要选择 Link 选项卡,选中“Generate mapfile”复选框,并在最下面的 Project Options 里面输入:/mapinfo:lines,表示生成 MAP 文件时,加入行信息。最后按下 F7 来编译生成 EXE 可执行文件和 MAP 文件,此时可以在工程的Debug目录下找到刚刚生成的MAP文件,文件名为“工程名.map”。
  通过上面的步骤,已经得到了 MAP 文件,那么我们该如何利用它呢?让我们从一个简单的实例入手,一步一步演示使用MAP文件定位程序崩溃行的过程。
首先假设我们的VC工程中有下面这个文件:
//*****************************************************
// 程序名称:演示如何通过崩溃地址找出源代码的出错行
// 作者:刘可
// 日期:2003-6-19
// 本程序会产生“除0错误”,所以会导致
// 程序崩溃,弹出“非法操作”对话框。
//******************************************************
#i nclude
int crashtest(int a,int b)
{
int c;
c = a/b;
return c;
}
void main(void)
{
int a = 30;
int b = 0;
int ret;
printf("let’s begin crash test…\n");
ret = crashtest(a,b);
}
很显然本程序有“除0错误”,在 Debug 方式下编译,运行时会产生“非法操作”。我们记录下产生崩溃的地址——在我的机器上是 0x0040102f 。这个在不同的机器上可能地址不同,

第1页

TOP相关主题

  • 程序崩溃
  • tera游戏程序崩溃
  • 打印程序崩溃
  • 魅族mx4程序崩溃
  • tera程序崩溃
  • 无法定位程序输入点
  • 程序重定位
  • windows定位程序

我要评论

相关文档

  • SDL第六课定位导致程序崩溃的位置

    SDL第六课定位导致程序崩溃的位置_IT/计算机_专业资料。SDL是什么? SDL(... 定位程序崩溃点儿 3页 免费 SDL-QP10-2010_生产过程... 暂无评价 6页 ...

  • 如何使用MAP文件找到程序崩溃的原因

    如何使用MAP文件找到程序崩溃的原因_IT/计算机_专业资料。软件调试... 定位程序崩溃点儿 3页 免费2014 Baidu 使用百度前必读

  • 如何通过崩溃地址找到出错的代码行

    7页 2财富值 定位程序崩溃点儿 3页 免费 CC++定位崩溃代码行的方法 11页 1财富值 如何使用MAP文件找到程序崩... 19页 1财富值...

  • CC++定位崩溃代码行的方法

    CC++定位崩溃代码行的方法_IT/计算机_专业资料。很好如何根据异常提示信息找出... 定位程序崩溃点儿 3页 免费 内存泄漏的检测、定位和... 7页 免费 定位VC...

  • 记录程序崩溃时的调用堆栈

    18 日 星期四 11:05 简介 当 release 版本的程序交付给用户使用后,如果应用程序崩溃了,怎么样通过 windows 提示的 offset 地址 来定位源程序中对应的出错代码呢...

  • 单点定位程序说明

    单点定位程序说明_物理_自然科学_专业资料。含有单点定位算法流程图,以及单点定位程序设计流程图GPS 单点定位程序文档说明一 程序说明 本程序的基本功能是利用测...

  • 定位Crash错误

    定位Crash错误_IT/计算机_专业资料。1. 在开发环境下定位Crash错误 1.1 普通... 定位程序崩溃点儿 3页 免费 crash 10页 免费 Crash 影评 3页 免费 train ...

  • 无法定位程序输入点-except-handler4-common ...的解决...

    无法定位程序输入点-except-handler4-common ...的解决方法_电脑基础知识_IT/计算机_专业资料。无法定位程序输入点-except-handler4-common ... 的解决方法 最近...

  • 从泄漏地址和崩溃地址定位代码行

    从泄漏地址和崩溃地址定位代码行_计算机软件及应用_IT/计算机_专业资料。从泄漏... 定位程序崩溃点儿 3页 免费2014 Baidu 使用百度前必读

  • 无法定位程序输入点 于动态链接库上的解决方法

    无法定位程序输入点 于动态链接库上的解决方法这段时间很多网友提出“无法定位程序输入点 于动态链接库上”题,针对这一问题给出 答案,但愿大家通过这篇文章都能解决...

站点地图 | 文档上传 | 侵权投诉 | 手机版
新浪认证  诚信网站  绿色网站  可信网站   非经营性网站备案
本站所有资源均来自互联网,本站只负责收集和整理,均不承担任何法律责任,如有侵权等其它行为请联系我们.
文档下载 Copyright 2013 doc.xuehai.net All Rights Reserved.  email
返回顶部