6 软件调试基础知识
2015-05-15 16:21
120 查看
———《软件调试实战》
1.代码评审: 通过阅读代码来检查源代码与编码标准的符合性以及代码质量的活动;
白盒测试:是通过程序的源代码进行测试而不使用用户界面。这种类型的测试需要从代码句法发现内部代码在算法,溢出,路径,条件等等中的缺点或者错误,进而加以修正;
黑盒测试:又被称为功能测试、数据驱动测试或基于规格说明的测试,是通过使用整个软件或某种软件功能来严格地测试, 而并没有通过检查程序的源代码或者很清楚地了解该软件的源代码程序具体是怎样设计的。测试人员通过输入他们的数据然后看输出的结果从而了解软件怎样工作。
2.在程序崩溃时执行栈跟踪
C/C++程序的栈是一个内存片段,用来存储每个活动的函数的栈帧(stack fram)。栈帧由返回地址、函数参数和局部变量组成。
栈跟踪(stack trace)是一个实际的栈帧链,这个链从调试器当前停止或暂停的最顶部函数开始,向下一直到main()函数。当潜入函数条用太长,造成栈没有足够空间来存储当前帧栈时,就发生了栈溢出。
除了在源代码中显示程序崩溃的位置外,调试器还显示帧栈和崩溃的栈跟踪。栈跟踪是用于调试程序崩溃位置的有用信息,因为他可以告诉我们导致崩溃的函数的函数调用链。
GDB调试器通过编号来引用帧栈,其中当前帧栈编号为0, mian()函数的帧栈标号最高。
GDB帧栈跟踪命令是
3 查看程序执行的时间
(gdb) time < program > [< program args…>]
![](http://img.blog.csdn.net/20150515134925734)
real: 程序从开始到结束实际所用的时间;
user: 程序的用户CPU时间,即CPU计算时间
sys: 系统调用所花时间。
4追踪程序的库函数与系统函数调用:strace;
make实用程序管理Linux/Unix系统上的编译和构建;
5信息重定向如:
$ trace ./insert 12 5 18 1> note.txt 2>&1
将标准输出重定向到文件note.txt,同时将标准错误输出重定向到标准输出,及标准输出与标准错误输出均输出至文件note.txt中;
重定向 >
6 将GDB附加到运行的程序:(gdb) attach pid
方法一:首先运行程序并保持程序等待,然后在另一个窗口中查看进程ID,
方法二:
将GDB附加到运行的程序
1.代码评审: 通过阅读代码来检查源代码与编码标准的符合性以及代码质量的活动;
白盒测试:是通过程序的源代码进行测试而不使用用户界面。这种类型的测试需要从代码句法发现内部代码在算法,溢出,路径,条件等等中的缺点或者错误,进而加以修正;
黑盒测试:又被称为功能测试、数据驱动测试或基于规格说明的测试,是通过使用整个软件或某种软件功能来严格地测试, 而并没有通过检查程序的源代码或者很清楚地了解该软件的源代码程序具体是怎样设计的。测试人员通过输入他们的数据然后看输出的结果从而了解软件怎样工作。
2.在程序崩溃时执行栈跟踪
C/C++程序的栈是一个内存片段,用来存储每个活动的函数的栈帧(stack fram)。栈帧由返回地址、函数参数和局部变量组成。
栈跟踪(stack trace)是一个实际的栈帧链,这个链从调试器当前停止或暂停的最顶部函数开始,向下一直到main()函数。当潜入函数条用太长,造成栈没有足够空间来存储当前帧栈时,就发生了栈溢出。
除了在源代码中显示程序崩溃的位置外,调试器还显示帧栈和崩溃的栈跟踪。栈跟踪是用于调试程序崩溃位置的有用信息,因为他可以告诉我们导致崩溃的函数的函数调用链。
GDB调试器通过编号来引用帧栈,其中当前帧栈编号为0, mian()函数的帧栈标号最高。
GDB帧栈跟踪命令是
backtrace(bt), where, 在GDB中通过命令
up,down,来切换查看其它帧, 或直接通过命令
frame fra_num, 切换到其它帧查看,或设置断点等。
3 查看程序执行的时间
(gdb) time < program > [< program args…>]
real: 程序从开始到结束实际所用的时间;
user: 程序的用户CPU时间,即CPU计算时间
sys: 系统调用所花时间。
4追踪程序的库函数与系统函数调用:strace;
make实用程序管理Linux/Unix系统上的编译和构建;
5信息重定向如:
$ trace ./insert 12 5 18 1> note.txt 2>&1
将标准输出重定向到文件note.txt,同时将标准错误输出重定向到标准输出,及标准输出与标准错误输出均输出至文件note.txt中;
重定向 >
6 将GDB附加到运行的程序:(gdb) attach pid
方法一:首先运行程序并保持程序等待,然后在另一个窗口中查看进程ID,
ps aux | grep executable_filename, 启动gdb( 无需参数)进入gdb界面,然后执行:(gdb) attach pid
方法二:
$ gdb filename peocess_id
将GDB附加到运行的程序
相关文章推荐
- 嵌入式硬件和软件的一些基础知识:
- 全国计算机技术与软件专业技术资格(水平)考试【软件评测师】-考试内容总结(八)信息化基础知识
- 《软件测试管理》第14章 软件测试常见问题——(一)基础知识部分
- 软件开发基础知识
- Java基础知识五:异常、断言、日志和调试
- Java教程:软件开发基础知识
- 软件测试的基础知识概要介绍
- 做物流软件常常涉及到的业务知识基础和原则(一)
- 软件测试基础知识整理
- 全国计算机技术与软件专业技术资格(水平)考试【软件评测师】-考试内容总结(一)计算机系统构成及硬件基础知识
- 软件调试相关知识总结
- 软件测试基础知识(二)
- 软件测试基础知识(一)
- 基础知识:预防、判断及阻止流氓软件
- 基础知识(11)- 异常、断言、日志和调试
- Java软件开发基础知识梳理之(5)------Hibernate N + 1产生原因及解决办法
- 软件测试中的那些不可遗忘的基础知识
- 软件工程基础知识
- 《软件测试管理》第14章 软件测试常见问题——(一)基础知识部分
- 软件测试基础知识复习