klee(1): 用docker安装klee+创建画像+小实验

Klee

https://blog.csdn.net/vincent_nkcs/article/details/85224491

  1. 利用docker安装klee
    现在(2021年11月)官网推荐是2.1版本的
    klee官网
docker pull klee/klee

或指定tags, 例如指定2.1版本的

docker pull klee/klee:2.1
  1. 创建临时画像
    exit退出临时画像 画像自动删除
 docker run --rm -ti --ulimit='stack=-1:-1' klee/klee
 exit
  1. 永久画像
docker run -ti --name=ws_klee --ulimit='stack=-1:-1' klee/klee
  1. 进入画像
docker start -ai ws_klee
  1. 删除画像
docker rm ws_klee

----------------分割线------------

  • 画像提供了clang和LLVM工具,分别做编译c文件和将c文件转换字节码文件的工作,每个新建的画像中都有klee_build 和 klee_src两个文件夹,klee_src包含了构建KLEE的源码,klee_build是klee_src构建的工程。
    在这里插入图片描述
  • 我们能在klee_src中发现examples文件夹,其中包含了四个初始文件夹,分别是get_sign,islower,regexp,sort,每个文件夹里面包含一个同名c文件,是官方给出的测试代码例子
    在这里插入图片描述
  • 测试一个判断正负数的程序,打开前文提到的get_sign.c文件,可以看到测试函数get_sign和main函数。
  • klee_make_symbolic是KLEE工具自带的测试函数,通过自定义的变量,不断产生值赋给a,以此完成自动生成样例功能。
    在这里插入图片描述
  • 编译该c文件:
    clang -I …/…/include -emit-llvm -c -g get_sign.c
  • 同目录下生成了一个get_sign.bc字节码文件,然后进行测试:
    klee get_sign.bc
    在这里插入图片描述
  • 其中klee-out-0是本次测试结果,klee-last是最新测试结果,每次测试后覆盖。
    在这里插入图片描述
  • klee-last中包含最新测试的缺陷说明和测试样例等文件
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值