辛苦两天了,啥也不说,先来张图:
看着可真漂亮,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
命令截图如下:
9.下面开始下载graphviz工具来可视化dot文件,dot文件具体是啥小伙伴们可以去官网看看。
在Linux下安装graphviz联网使用命令:
sudo apt-get install graphviz
10.验证命令:
dot -version
如下所示:
十几种图文件格式,总有一款适合你,○( ^皿^)っHiahia…
11.使用dot命令:
dot -Tgif 111.dot -o 111.gif,
此处我们将dot转化成了gif图,在自动生成的文件夹sootOutput里面就能看到他,有木有很兴奋?
编后语:最近由于论文需求画的Java控制流图还不能很好满足需求,小伙伴们有更好的工具可以共享出来呦,就不用这么辛苦了,可以在评论区里相互交流