栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Soot生成控制流图

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Soot生成控制流图

1整体流程

首先,Soot安装完成后得“sootclasses-trunk-jar-with-dependencies.jar”,使用此jar文件来完成Soot操作。
其次,明确我们使用Soot时,输入.class文件,输出也是.class文件。
最后,Soot绘制完成后得到.dot文件,需要使用graphviz进行绘制,从而得到控制流图。

2命令

运行“sootclasses-trunk-jar-with-dependencies.jar”时,输入文件BubbleSort.class文件的位置与sootclasses-trunk-jar-with-dependencies.jar在同一目录下。

2.1按语句划分
# 命令1:按语句划分
java -cp sootclasses-trunk-jar-with-dependencies.jar soot.tools.CFGViewer -cp . -pp BubbleSort

其中:
(1)“soot.tools.CFGViewer”表示使用Soot的控制流图绘制功能
(2)“-cp .”表示Soot指明类路径,“.”表示类路径为当前路径。
(3)Soot还必须指明 java.lang.Object,可以用“-pp”,也可以添加“rj.jar”。
(4)BubbleSort指代BubbleSort.class,Soot默认输入class文件;当然,你可以用"–src-prec"指定输入文件类型。

2.2按基本块划分
# 命令2:按基本块划分
java -cp sootclasses-trunk-jar-with-dependencies.jar soot.tools.CFGViewer -cp . -pp --graph=BriefBlockGraph BubbleSort

其中:“–graph=BriefBlockGraph”表示按基本块划分

2.3Soot命令运行结果

在BubbleSort.class同一目录下生成sootOutput文件,文件中包含图中的四个.dot文件及一个优化后的BubbleSort.class文件。

4绘制

生成的.dot文件名称好复杂,为了简便操作,将"BubbleSort void main(java.lang.String[]).dot"改名为"main.dot",然后使用下列命令进行绘制。

dot -Tpng -o main.png main.dot
5结果 5.1 按语句划分的控制流图

下图是main.dot的控制流图。

5.2 按基本块划分的控制流图

下图是main.dot的控制流图。

由于main函数中没有控制流的转移,所以将其绘制为一个基本块更为合理(即5.2的效果更符合要求)。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/947102.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号