9.12测试(一)——应用程序一运行就崩溃,且每次崩溃的位置都不一样
2015-08-24 10:14
267 查看
有个应用程序一运行就崩溃,现在你拿到了源码。在调试器中运行10次之后,发现该应用每次崩溃的位置都不一样。这个应用只有一个线程,并且只调用C标准库函数。究竟是什么样的编程错误导致程序崩溃?该如何逐一测试每种错误?
解答
随机崩溃的常见原因:
1)随机变量:某个随机变量或可变分量,程序每次执行时取值不定。包括:用户输入、程序生成的随机数或当前时间等。
2)未初始化变量:在某些语言中,该变量可能含有任意值。这个变量取不同值可能导致代码每次执行路径有所不同。
3)内存泄露:可能存在内存溢出。每次运行时引发问题的可疑进程随机不定,这与当时运行的进程数量有关。另外还包括堆溢出或栈内数据被破坏。
4)外部以来:可能依赖别的应用程序、机器或资源。要是存在多处依赖,程序就有可能在任意位置崩溃。
解决:
1)关闭系统中其他所有应用,仔细追踪资源使用。如果该程序有些部分可以关掉,就设法关掉。
2)在另外一台机器上运行该程序,看看是否重现同一问题。
3)借助工具检查特定情况。例如,可以利用运行时工具来检查未初始化变量。
解答
随机崩溃的常见原因:
1)随机变量:某个随机变量或可变分量,程序每次执行时取值不定。包括:用户输入、程序生成的随机数或当前时间等。
2)未初始化变量:在某些语言中,该变量可能含有任意值。这个变量取不同值可能导致代码每次执行路径有所不同。
3)内存泄露:可能存在内存溢出。每次运行时引发问题的可疑进程随机不定,这与当时运行的进程数量有关。另外还包括堆溢出或栈内数据被破坏。
4)外部以来:可能依赖别的应用程序、机器或资源。要是存在多处依赖,程序就有可能在任意位置崩溃。
解决:
1)关闭系统中其他所有应用,仔细追踪资源使用。如果该程序有些部分可以关掉,就设法关掉。
2)在另外一台机器上运行该程序,看看是否重现同一问题。
3)借助工具检查特定情况。例如,可以利用运行时工具来检查未初始化变量。
相关文章推荐
- 如何用PS处理虚的照片.使它变的清晰
- MSSQL Server的连接问题分析和解决(1)
- java组合模式
- 循环链表的有趣遍历
- python 语言技巧特点
- Linux内核监控模块-0-开篇简介
- 《转》dbcontext函数
- Linux下Tomcat的启动、关闭、杀死进程
- 如何将ppt或其他文档转为pdf格式
- 2015 H1 DDoS报告:DDoS***呈两极分化
- pyhton学习笔记三重引号编写多行字符串块
- Nodejs笔记—入门篇
- 《实体解析与信息质量》 - 3.1.4 ENRES 元模型
- RadioButton点击带下划线效果
- 8 String to Integer (atoi)
- python提示UnicodeDecodeError: ‘utf8’ codec can’t decode byte 0xa1 in position 6: invalid start byte
- iOS oc 回顾与复习
- CentOS6.5+LAMP+YAF
- 【笔试】19、该类型添加赋值运算符函数
- table居中