[CareerCup] 12.2 Find the Reason of Crash 找到程序崩溃的原因
12.2 You are given the source to an application which crashes when it is run. After running it ten times in a debugger, you find it never crashes in the same place. The application is single threaded, and uses only the C standard library. What programming errors could be causing this crash? How would you test each one?
这道题说有个应用程序运行的时候崩溃了,在调试运行了十次后,发现在同一个地方不崩溃了。这个应用是单线程的,只用了C语言的标准库,问什么程序原因会导致这个崩溃,怎么样检测每一个原因。根据书上的描述,我们先来看一个会导致程序崩溃的通常的原因:
1. 随机变量。程序有时候会用一些随机数字或变量,每次运行时值都不同。
2. 未初始化的变量。程序有未初始化的变量,在有些程序语言中,这可能会赋值为任意值。
3. 内存泄露。程序有时候会用尽内存,也包括堆和栈的溢出。
4. 外部依赖:程序有时候会依赖其他的应用,机器或资源。如果有很多的外部依赖,很有可能程序会在某一点崩溃掉。
既然程序不在同一个地方崩溃,那么有可能是和某一个部件或场景相关联。例如,可能程序在打开后,什么都不动的情况下是好的,但是当读入了一个文件,或者有了其他的操作时,崩溃了。那么我们就最好用排除法来找原因,关掉所有其他的应用,仔细追踪各种资源。如果有部分程序可以禁用,那么就禁用掉,然后在不同的机子上跑程序看是否会遇到同样的问题。
另外我们也可以借助一些专业的工具来帮我们找错,比如对于问题2,未初始化的变量,就有专门的工具来替我们找到这些变量。
[CareerCup] 12.2 Find the Reason of Crash 找到程序崩溃的原因的更多相关文章
- [CareerCup] 12.3 Test Move Method in a Chess Game 测试象棋游戏中的移动方法
12.3 We have the following method used in a chess game: boolean canMoveTo( int x, int y). This metho ...
- 12个优秀用户体验的移动应用程序 UI 设计
最美丽的,现代化的和惊人的移动 UI 设计就在这里.今天,我们挑选了12个来自 Behance 和 Dribbble 网站的优秀用户体验的手机界面设计.这些界面设计作品都是由世界各地的优秀设计师分享, ...
- android 程序崩溃crash日志的捕捉
android 程序崩溃crash日志的捕捉 之前在项目开发过程中,一直会遇到程序崩溃了,但是测试組的哥哥们又没及时的导出日志.... 后来在诳群的时候听别人说起,腾讯有那么一个叫bugly的东西 将 ...
- [CareerCup] 12.1 Find Mistakes 找程序错误
12.1 Find the mistake(s) in the following code: unsigned int i; ; i >= ; --i) printf("%d\n&q ...
- [CareerCup] 12.4 Test a Webpage 测试一个网页
12.4 How would you load test a webpage without using any test tools? 这道题问我们如何不用任何测试工具来加载测试一个网页.加载测试可 ...
- [CareerCup] 12.5 Test a Pen 测试一支笔
12.5 How would you testa pen? 这道题让我们测试一支笔,我们需要问面试官许多问题来理解"who,what,where,when,how and why" ...
- [CareerCup] 12.6 Test an ATM 测试一个自动取款机
12.6 How would you test an ATM in a distributed banking system? 这道题问我们如何来测试一个自动取款机,我们首先要询问下列问题: - 谁来 ...
- 第12月第1天 MASConstraintMaker crash
1. crash [valueLabel mas_makeConstraints:^(PAKitMASConstraintMaker *make) { make.left.equalTo(finish ...
- iOS Crash 分析 符号化崩溃日志
参考: http://blog.csdn.net/diyagoanyhacker/article/details/41247367 http://blog.csdn.net/diyagoanyhack ...
随机推荐
- Win7下:编译器错误信息: CS0016: 未能写入输出文件
错误如下: "/"应用程序中的服务器错误. 编译错误 说明: 在编译向该请求提供服务所需资源的过程中出现错误.请检查下列特定错误详细信息并适当地修改源代码. 编译器错误消息: CS ...
- [转]Designing a User Interface
UI design can be divided into three essential elements : functionality, aesthetics, and performance. ...
- Windows下查看端口占用
最近在重新安装Mysql的时候,发现3306默认端口被占用了.类似的情况常常遇到,想查看到底是哪个程序把这个端口占用了. 下面是我google找到的方法,和大家分享. 1. 首先,使用netstat ...
- Effective Java 45 Minimize the scope of local variables
Principle The most powerful technique for minimizing the scope of a local variable is to declare it ...
- Memcache修改端口
修改端口 网上很多的说法都无法起作用(像下面这样) D:\.......memcached -p 10000 -d start 现在有两种解决方法 ①直接修改注册表 HKEY_LOCAL_MACHIN ...
- Reverse Bits
Reverse bits of a given 32 bits unsigned integer. For example, given input 43261596 (represented in ...
- mac 免密码登陆服务器
由于mac os 是基于unix的操作系统终端和linux非常类似,所以不用借助类似于windows下的putty 和CRT工具即可远程登陆linux服务器,只需简单地3步即可免密码ssh远程. 1 ...
- DimDate populate data
日期维度 任何一个数据仓库都应该有一个日期维度. 因为很少有不需要通过日期维度看数据的情况存在. 日期维度的好处是,你可以通过他连接各个事实表,然后在报表端传送报表参数的时候, 直接自动过滤日期维度的 ...
- 2014 Super Training #10 D 花生的序列 --DP
原题: FZU 2170 http://acm.fzu.edu.cn/problem.php?pid=2170 这题确实是当时没读懂题目,连样例都没想通,所以没做了,所以还是感觉这样散漫的做不好,有些 ...
- [ORACLE错误]ORA-00001: unique constraint (...) violated并不一定是数据冲突
遇到这种情况,重建完表和索引后,终于正常INSERT了. prompt Importing table COUPON_ACTIVITYset feedback offset define offin ...