使用CREST测试 前对多文件程序的 Instrumentation 方法

来源:互联网 发布:网络中常用表情符号 编辑:程序博客网 时间:2024/06/07 09:28


       CREST 是 一个 面向C语言的 自动测试用例生成工具,采用 concolic testing 的技术 对 C 程序进行 bug检查。CREST 在 应用到 目标程序之前,需要对其进行预先处理 intrumentation。由 专门改编的CIL (C Intermediate Language)  完成这项工作。 但是 CREST 的主页上 只提供了 对于 单文件 代码的 处理方法: crestc  文件.c。然而大多开源软件都是 比较复杂的 多文件大型程序。这里 有两种比较常用的方法:


1. 用CIL 中的 merge 命令 将多文件程序 整合成单文件代码,需要在configure 之后 更改 makefile 文件的内容:

< AUTOMAKE = automake---> AUTOMAKE = echo< CC = gcc---> CC = cilly< LDFLAGS = ---> LDFLAGS = --merge --keepmerged< CFLAGS = -g -O2---> CFLAGS = --merge -g -O2

改好之后,make 就会得到一个 ##_comb.c 单文件程序,就可以使用 crestc 了。但是对于架构比较复杂的软件,这个方法能力比较有限,这时候就采用第二种方法。


2. 在make生成可执行文件的过程中 进行 Instrumentation. 也需要对 makefile 进行更改:


CC = cilly  --save-temps  --doCrestIntrument

CFLAGS = -DCREST  -I ../../../include

LDFLAGS = -L ../../../lib

LIBS = -lcrest -lstdc++


不同的环境有的项可能需要不同的值,但是需要满足一下几点:

1. Modify cilly path in CC to the path of cilly in your computer.

2. Modify-I ../../../include in CFLAGS to include crest.h in your computer.

3. Modify-L ../../../lib in LDFLAGS to includes libcrest.a in your computer.




0 0
原创粉丝点击