在Centos7上安装Daikon
Daikon简介
来自官方的翻译
Daikon 是动态检测可能不变量的一种实现;也就是说,Daikon不变量检测器会报告程序中可能存在的不变量。不变量是程序在某个点或某些点上所持有的性质;它们通常出现在断言语句、文档和形式规范中。不变量可用于程序理解和许多其他应用。例如:'x.field > abs(y)'; 'y = 2*x+3'; '数组 a 是有序的'; 对于所有列表对象 lst,'lst.next.prev = lst'; 对于所有树节点对象 n,'n.left.value < n.right.value'; 'p != null => p.content in myArray';等等。 |
这样的解释可能有点太晦涩,下面是省流版
Daikon是一个工具,它可以通过观察程序运行时的数据,自动发现一些潜在的规律或模式,我们把这些规律或模式称为不变量。比如说,你写了一个程序对一组数字从小到大排序。在排序之后,数组中的元素肯定是按升序排列的,即array[i] <= array[i+1]。这就是一个不变量,无论输入数据是什么,只要排序成功,这个性质总是成立。再举一个例子,如果一个程序购物车的代码,不变量可能是”购物车不为空,则必须有商品被添加”。
Daikon可以自动分析程序运行轨迹,发现诸如”数组是排序的”、”购物车非空必有商品”这样的不变量规律,并将它们报告给程序员,供他们理解程序、检查错误或声明一些规范性的性质。
安装Daikon
安装Daikon所需环境
首先需要安装JDK,如果使用的是Centos 7自带的,则使用不了javac等命令,需要参考javac命令报错bash:javac:command not found这篇博客进行修改
安装JDK可以参考CentOS7 安装jdk8教程这篇文章
下载Daikon
# 找一个位置新建一个daikonparent文件夹,假设建立在home目录下 |
tips:如果下载太慢,如果是虚拟机的话可以用下载到本机上,利用VMware Tools
之类的工具拷到虚拟机上(移动后一定检查文件完整不!!!这没弄好导致卡了我半天)。如果不是虚拟机,可以试试wget换源的操作,如果还不行,最好使用magic了
配置Daikon
# 转到用户根目录 |
然后在.bashrc
文件最下面加入下面两句话(按下I
键进入插入模式,在最下面粘贴完下面两句话后,按下ESC
,然后输入:wq
保存并退出)
# 你自己的Daikon绝对路径,以刚刚建立在home下daikonparent文件夹的为例 |
然后应用设定
source .bashrc |
编译 Daikon 并构建其他工具
# 安装make工具 |
之后会编译一段时间就安装完成了,编译完成后是支持Java
语言的
验证安装
这里使用Daikon自带的测试用例
# 进入测试用例目录 |
如果能生成QueueArTester.dtrace.gz
文件,则说明安装成功,这里是仅支持Java的,如果想支持C++还需要安装kvasir