6 软件调试基础知识

———《软件调试实战》

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附加到运行的程序

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值