使用soot和graphviz画Java的控制流图

辛苦两天了,啥也不说,先来张图:

使用soot和graphviz画Java的控制流图_第1张图片使用soot和graphviz画Java的控制流图_第2张图片

看着可真漂亮,O(∩_∩)O哈哈~



实验环境是Ubuntu。

1.JDK的版本必须是1.7或者以下,JDK1.8不行,总会报错,

2.下载sootclasses-2.5.0.jar包:http://download.csdn.net/download/sheshizhang/4573588

   可在github上照着官网上面的小例子试试手:https://github.com/Sable/soot/wiki/Introduction:-Soot-as-a-command-line-tool

3.下面正式使用soot,首先定义soot.jar的引用路径:

export SOOT_PATH=$HOME/mooc/soot-2.4.0.jar

4.引用的类的路径:

export CLASS_DIR=/home/cpp/cp

5.自定义的类的名称:

export CLASS_NAME=Test1

6.使用javac编译Java文件:

javac $CLASS_DIR/$CLASS_NAME.java

7.定义soot-class路径:

export SOOT_CLASS_PATH=$CLASS_DIR:$JAVA_HOME/jre/lib/rt.jar

8.使用命令生成dot文件:

java -cp $SOOT_PATH soot.tools.CFGViewer --soot-class-path $SOOT_CLASS_PATH --graph=BriefBlockGraph $CLASS_NAME

使用soot和graphviz画Java的控制流图_第3张图片

命令截图如下:

使用soot和graphviz画Java的控制流图_第4张图片


9.下面开始下载graphviz工具来可视化dot文件,dot文件具体是啥小伙伴们可以去官网看看。

在Linux下安装graphviz联网使用命令:

 sudo apt-get install graphviz

10.验证命令:

dot -version

如下所示:

使用soot和graphviz画Java的控制流图_第5张图片



十几种图文件格式,总有一款适合你,○( ^皿^)っHiahia…

11.使用dot命令:

dot -Tgif 111.dot -o 111.gif,

此处我们将dot转化成了gif图,在自动生成的文件夹sootOutput里面就能看到他,有木有很兴奋?

编后语:最近由于论文需求画的Java控制流图还不能很好满足需求,小伙伴们有更好的工具可以共享出来呦,就不用这么辛苦了,可以在评论区里相互交流

你可能感兴趣的:(使用soot和graphviz画Java的控制流图)