当前位置: 代码迷 >> 综合 >> [Java Path Finder][JPF学习笔记][6]jpf-symbc的初步使用
  详细解决方案

[Java Path Finder][JPF学习笔记][6]jpf-symbc的初步使用

热度:13   发布时间:2023-12-16 07:49:22.0

这篇日志继续总结些简单的JPF使用经验:

在http://babelfish.arc.nasa.gov/trac/jpf/wiki/projects/jpf-symbc/doc 对Symbolic PathFinder进行了最基本介绍,并给出了一个Example.java和Example.jpf的例子。

这里摘录一些设置,进行简单的中文解释:

# The following JPF options are usually used for SPF as well: 
# no state matching (设置不使用state matching)
vm.storage.class=nil 
# instruct jpf to not stop at first error  (设置运行过程中出错是否停止)
search.multiple_errors=true 
# specify the search strategy (default is DFS)  (设置搜索策略,默认为深度优先搜索)
search.class = .search.heuristic.BFSHeuristic 
# limit the search depth (number of choices along the path) 
# (设置搜索的深度)
search.depth_limit = 10 
#You can specify multiple methods to be executed symbolically as follows: 
#symbolic.method=<list of methods to be executed symbolically separated by ","> 
#You can pick which decision procedure to choose (if unspecified, choco is used as #default): 
# (symbolic pathfinder一共用了三种constraint solver,分别是choco,iasolver和CVC3)
symbolic.dp=choco 
symbolic.dp=iasolver 
symbolic.dp=cvc3 
symbolic.dp=cvc3bitvec 
symbolic.dp=no_solver 
#(explores an over-approximation of program paths; similar to a CFG traversal) 
#A new option was added to implement lazy initialization (see [TACAS'03] paper) 
#(设置是否使用lazy initialization)
symbolic.lazy=on 
#(default is off) -- for now it is incompatible with Strings 
#New options have been added, to specify min/max values for symbolic variables #and also to give the default for don't care values. 
symbolic.minint=-100 
symbolic.maxint=100 
symbolic.minreal=-1000.0 
symbolic.maxreal=1000.0 symbolic.undefined=0 
#An option to increase the time limit until which choco tries to solve a particular #constraint 
choco.time_bound=30000 
# default value is 30000 

另外,实际上SPF提供了非常多的例子,来说明其用法,例子主要在:%JPF_HOME%\jpf\jpf-symbc\src\examples 目录下,以及%JPF_HOME%\jpf-symbc\src\tests\gov\nasa\jpf\symbc 目录下,譬如%JPF_HOME%\jpf\jpf-symbc\src\examples\strings 目录下,就介绍了怎么处理字符串数组变量(因为Java的main方法都是String[] args)。

我准备接下来看看什么是lazy initialization,争取在今天晚上再总结一篇博文。

  相关解决方案