您的位置:首页 > 其它

6 软件调试基础知识

2015-05-15 16:21 120 查看
———《软件调试实战》

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附加到运行的程序
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: