华东师范大学软件分析与验证实验

环境配置

请先根据手册上的内容下载github里的实验内容。 首先下载docker,进入官网https://www.docker.com/,windows用户选择AMD64,进行下载安装。(使用Linux的同学应该可以跳过这一步)

在这里插入图片描述
安装完成之后打开,跳过注册,将docker挂在后台运行。

打开VSCODE,安装插件:
在这里插入图片描述

进入lab1的目录,按shift+鼠标右键,然后选择通过VSCODE打开。
在这里插入图片描述
打开之后按下F1,按照手册上的操作输入:Rebuild and Reopen in Container
如果在过程中出错,在命令行里输入docker pull ecnusa/ecnu-sa-labs,完成后可以再次尝试。(可能需要挂梯子)

实验流程

首先点击文件夹c_programs,然后手动一个个分析程序,看看有没有除零的错误。

在这里插入图片描述
例:
在这里插入图片描述
在这里显然当b输入‘0’时,a=b/a会发生错误。(被除数为0)
而在该程序中,
在这里插入图片描述
尽管有c=a/b,但无论如何都不可能会发生b=0的情况,所以程序是没有问题的。
在文件夹下打开answer.txt,把判断结果填入ground truth这一列中,如果有除零问题就填入wrong,没有就填入right.
在这里插入图片描述
然后直接执行:

make check_versions && make all

会出现分析结果,在该文件夹中:
在这里插入图片描述
点进去检查,afl检查有无crash:
在这里插入图片描述

csa_logs则查看有无类似警告:

c_programs/test2.c:8:16: warning: Division by zero [core.DivideZero]
    8 |       k += 100 / (j - i);
      |            ~~~~^~~~~~~~~
1 warning generated.

如果检查出错误则填入reject,否则填入accept,在answer.txt中这两列填入:
在这里插入图片描述
最后计算它们的precison和recall,计算方式可以查看这篇文章(如果忘记了上课讲的内容和那张图的话):
在这里插入图片描述

https://blog.csdn.net/W1995S/article/details/114988637

最后回答这三个问题:
Question 1: From the given programs, can AFL be a sound analysis? Can it be complete?

Question 2: From the given programs, can CSA be a sound analysis? Can it be complete?

Question 3: What are the pros and cons of using the CSA to find divide-by-zero errors? Comment
on both the accuracy and cost of the analyzer under these two domains.

回答完之后返回lab1文件夹下,点击鼠标右键(如果安装了git的话),打开git bash,输入如下命令提交:

   git add results/ answers.txt
   git commit -m "your commit message here"
   git push
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值