Daikon的安装过程

准备工作

  1. Linux版本:Ubuntu18.04lts
  2. Daikon版本:5.8.6
  3. JDK版本:1.8.0

安装过程

安装JDK

  • 在/usr/lib下新建文件夹jvm,并将jdk-8u221-linux-x64文件夹中jdk1.8.0_221文件夹复制到jvm文件夹下,如下图:

​​​​​         ​​

  • 配置环境变量

     vi编辑etc/profile文件,添加如下三行内容,并source保存。   

export JAVA_HOME=/usr/lib/jvm/jdk1.8.0_221

export PATH=$JAVA_HOME/bin:$PATH

export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
root@ubuntu:/# vi etc/profile         //vi编译
root@ubuntu:/# source etc/profile     //source保存
  • 测试jdk是否安装成功
root@ubuntu:/# java -version
java version "1.8.0_221"
Java(TM) SE Runtime Environment (build 1.8.0_221-b11)
Java HotSpot(TM) 64-Bit Server VM (build 25.221-b11, mixed mode)

安装Daikon

  • 在usr下新建文件夹daikonparent,将daikon-5.8.6文件夹复制到daikonparent文件夹中

       

  • 配置环境变量
export DAIKONDIR=/usr/daikonparent/daikon-5.8.6

export JAVA_HOME=/usr/lib/jvm/jdk1.8.0_221

export CLASSPATH=.:$JAVA_HOME/lib:$JAVA_HOME/jre/lib:$CLASSPATH::$DAIKONDIR/daikon.jar

export PATH=$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$PATH

source $DAIKONDIR/scripts/daikon.bashrc

 保存环境变量并使其生效

root@ubuntu:/#source /etc/profile
  • 编译Daikon
root@ubuntu:/# make -C $DAIKONDIR rebuild-everything

       编译Daikon时会 出现很多错误,比如:XXXX not found,百度下载即可,下载后再次编译(我是把所有not found的错误都解决了),还是报错的话可以先不管,这些错误可能对Daikon使用没有影响,比如,我编译后结果如下:

      

      至此,可以用Daikon来生成Java语言编写的可执行程序,若想编译C/C++语言编写的可执行程序,则需继续下面的步骤

安装组件kvasir

  • 下载fjalar
root@ubuntu:/usr/daikonparent/daikon-5.8.6# rm -r fjalar
root@ubuntu:/usr/daikonparent/daikon-5.8.6# git clone https://github.com/codespecs/fjalar.git

     daikon 文件夹里自己有一个fjalar,需要删除后重新下载新的并覆盖;fjalar安装过程可能需要比较长的时间,也可能因为网络问题出错,耐心多试几次。

  • 编译kvasir
root@ubuntu:/usr/daikonparent/daikon-5.8.6# make kvasir

    kvasir的安装也会遇到XXXX not found等问题,根据提示安装即可。最终编译结果如下:

     

  • 安装扩展组件——DynComp

安装时可能会出现“dcomp_rt.jar” is up to date的问题,如下,

切换到java目录下,将原来的dcomp_rt.jar删除后重新编译即可,结果如下。

测试Daikon

这里测试Daikon自带的测试用例。

  • 测试Java可执行程序
root@ubuntu:/usr/daikonparent/daikon-5.8.6# cd examples/java-examples/QueueAr
root@ubuntu:/usr/daikonparent/daikon-5.8.6/examples/java-examples/QueueAr# javac -g DataStructures/QueueArTester.java
root@ubuntu:/usr/daikonparent/daikon-5.8.6/examples/java-examples/QueueAr# java -cp .:$DAIKONDIR/daikon.jar daikon.DynComp DataStructures.QueueArTester
root@ubuntu:/usr/daikonparent/daikon-5.8.6/examples/java-examples/QueueAr# java -cp .:$DAIKONDIR/daikon.jar daikon.Chicory --daikon --comparability-file=QueueArTester.decls-DynComp DataStructures.QueueArTester
root@ubuntu:/usr/daikonparent/daikon-5.8.6/examples/java-examples/QueueAr# java -cp .:$DAIKONDIR/daikon.jar daikon.Chicory --comparability-file=QueueArTester.decls-DynComp DataStructures.QueueArTester
root@ubuntu:/usr/daikonparent/daikon-5.8.6/examples/java-examples/QueueAr# java -cp $DAIKONDIR/daikon.jar daikon.Daikon QueueArTester.dtrace.gz

 最终生成dtrace.gz文件

    

  • 测试C语言可执行程序
root@ubuntu:/usr/daikonparent/daikon-5.8.6# cd $DAIKONDIR/examples/c-examples/wordplay
root@ubuntu:/usr/daikonparent/daikon-5.8.6/examples/c-examples/wordplay# gcc -gdwarf-2 -no-pie wordplay.c -o wordplay
root@ubuntu:/usr/daikonparent/daikon-5.8.6/examples/c-examples/wordplay# kvasir-dtrace ./wordplay -f words.txt 'Daikon Dynamic Invariant Detector'
root@ubuntu:/usr/daikonparent/daikon-5.8.6/examples/c-examples/wordplay# java -cp $DAIKONDIR/daikon.jar daikon.Daikon --config_option daikon.derive.Derivation.disable_derived_variables=true  daikon-output/wordplay.decls daikon-output/wordplay.dtrace
root@ubuntu:/usr/daikonparent/daikon-5.8.6/examples/c-examples/wordplay# kvasir-dtrace --dtrace-file=daikon-output/wordplay1.dtrace  ./wordplay -f words.txt  'daikon dynamic invariant detector'
root@ubuntu:/usr/daikonparent/daikon-5.8.6/examples/c-examples/wordplay# kvasir-dtrace --no-dyncomp --dtrace-file=daikon-output/wordplay2.dtrace  ./wordplay -f words.txt  'better results from multiple runs'
root@ubuntu:/usr/daikonparent/daikon-5.8.6/examples/c-examples/wordplay# kvasir-dtrace --no-dyncomp --dtrace-file=daikon-output/wordplay3.dtrace ./wordplay -f words.txt  'more testing equals better testing'
root@ubuntu:/usr/daikonparent/daikon-5.8.6/examples/c-examples/wordplay# java -Xmx256m daikon.Daikon daikon-output/wordplay*.dtrace daikon-output/wordplay.decls

最终生成wordplay.dtrace、wordplay1.dtrace 、wordplay2.dtrace、 wordplay3.dtrace 、wordplay-all.dtrace 文件

 

  • 3
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值