9.12測试(一)——应用程序一执行就崩溃,且每次崩溃的位置都不一样
有个应用程序一执行就崩溃,如今你拿到了源代码。在调试器中执行10次之后,发现该应用每次崩溃的位置都不一样。这个应用仅仅有一个线程。而且仅仅调用C标准库函数。到底是什么样的编程错误导致程序崩溃?该怎样逐一測试每种错误?
解答
随机崩溃的常见原因:
1)随机变量:某个随机变量或可变分量,程序每次运行时取值不定。
包含:用户输入、程序生成的随机数或当前时间等。
2)未初始化变量:在某些语言中,该变量可能含有随意值。
这个变量取不同值可能导致代码每次运行路径有所不同。
3)内存泄露:可能存在内存溢出。
每次执行时引发问题的可疑进程随机不定,这与当时执行的进程数量有关。另外还包含堆溢出或栈内数据被破坏。
4)外部以来:可能依赖别的应用程序、机器或资源。
要是存在多处依赖,程序就有可能在任何位置崩溃。
解决:
1)关闭系统中其它全部应用,细致追踪资源使用。
假设该程序有些部分能够关掉,就设法关掉。
2)在另外一台机器上执行该程序,看看是否重现同一问题。
3)借助工具检查特定情况。比如,能够利用执行时工具来检查未初始化变量。