程序插桩简介
一种基本的动态测试方法,向源程序中添加一些语句实现对程序代码的执行、变量的变化等情况的检查,可以获得程序的控制流和数据流信息。如果我们想要了解一个程序在某次运行中可执行语句被覆盖的情况,或是每个语句的实际执行次数,最好的办法就是利用插装技术,它在软件测试技术上占有非常高的地位。最简单的插装:在程序中插入打印语句printf(“ ...”)语句。
1.插桩位置:
a.程序的第一条语句;
b.分支语句的开始;
c.循环语句的开始;
d.下一个入口语句之前的语句;
e.程序的结束语句;
f.分支语句的结束;
g.循环语句的结束。
2.插桩策略:
①语句覆盖探针(基本块探针):在基本块的入口和出口处,分别植入相应的探针,以确定程序执行时该基本块是否被覆盖。
②分支覆盖探针:c/c++语言中,分支由分支点确定。对于每个分支,在其开始处植入一个相应的探针,以确定程序执行时该分支是否被覆盖。
③条件覆盖探针:c/c++语言中,if, swich,while, do-while, for 几种语法结构都支持条件判定,在每个条件表达式的布尔表达式处植入探针,进行变量跟踪取值,以确定其被覆盖情况。
3.设计插桩程序需要注意的几点:
①探测哪些信息;
②在什么位置设置探针;
③设置多少个探测点;
④特定位置插入用以判断变量特性的语句。
C语言插桩实例:https://blog.csdn.net/spring_willow/article/details/72887192
原文链接:https://blog.csdn.net/spring_willow/article/details/70576780