理论计算机科学电子笔记107(2004)27-31www.elsevier.com/locate/entcs使用Soot-Eclipse插件1可视化程序分析JenniferLhot'ak和OndrejLhota'k加拿大蒙特利尔麦吉尔大学Sable研究小组{jlhotak,olhotak} @ sable.mcgill.ca摘要我们将Soot字节码操作框架集成到EclipseIDE中,形成了一个强大的工具,用于以图形方式可视化程序分析的进度和输出。我们展示了几个例子,我们已经开发的可视化,并解释他们是如何有用的编译器的研究和教学。保留字:程序分析,可视化1介绍和动机Soot2 [3]是作为一个字节码分析和转换工具包开发的,它可以执行过程内和过程间的静态分析和转换。它已被广泛使用的研究人员无论是在黑貂研究小组和其他地方的实验与他们的新的分析,并提供了一个共同的框架比较的实证结果。此外,Soot还经常用于McGill和其他大学的优化编译器课程的教学,为学生的作业和项目奠定了基础在将Soot集成到Eclipse IDE中时,我们的目标是使学生和研究人员更容易访问Soot,并使Soot与其用户之间更好的交互成为可能我们专注于提供一组图形化的1这项工作得到了NSERC和IBM Eclipse创新基金的部分支持2包括Soot-Eclipse插件的Soot包可以从Soot主页免费获得:http://www.sable.mcgill.ca/soot1571-0661 © 2004 Elsevier B. V.根据CC BY-NC-ND许可证开放访问。doi:10.1016/j.entcs.2004.02.04428J. 洛塔克岛Lhoták/理论计算机科学电子笔记107(2004)27工具来控制Soot的行为,并让Soot向用户报告信息。Soot-Eclipse插件的关键部分是一个Soot启动器,它允许用户配置Soot的许多选项并启动Soot,一个中间表示(IR)编辑器,用于查看和编辑Soot的IR,以及一个可视化组件,用于在IR和源代码编辑器中显示程序分析结果。在Soot的开发中,特别是Eclipse插件的开发中,一个共同的主题是尽可能使其通用,使其成为开发新分析和转换的合适框架,而不仅仅是现有分析和转换的集合。Soot框架的两个主要用途,编译器研究和教学,都受益于程序分析可视化。对于研究人员来说,能够看到分析的进展和结果,可以更容易地开发新的复杂分析。在教学中,可视化可以用于分析算法的演示,以及由学生更好地理解和调试他们实现的程序分析2可视化程序分析结果Soot包括一个通用的注释框架[1],用于将分析结果编码在附加到IR部分(表达式,语句,方法,字段和类)的标签中注释框架在Soot中的各种IR之间传播标记,并且还可以将它们编码到class文件属性中以供其他工具使用。Soot-Eclipse插件读取标记作为要可视化的信息源。这意味着,想要可视化新分析结果的用户只需要使用标准注释框架标记对它们进行编码,并且它们将立即在Eclipse中可见为了可视化不同类型的结果,我们引入了三种新类型的标签。存储在这些标记中的信息被读入Eclipse,并与任何IR或原始源代码一起显示。字符串标记对文本信息进行编码,当鼠标移到关联的代码段上时,字符串标记显示为工具提示。颜色标签用于以颜色突出显示代码部分(例如变量或表达式)。链接标记对不同语句之间的连接进行编码,并显示为链接列表,使用这些链接可以导航到另一段代码。图1显示了一个示例分析(数组边界检查分析[2])结果的可视化。对于每个数组访问,有四种可能的分析结果:每个上限和下限都是安全的或潜在不安全的。我们使用四种颜色中的一种对每个可能的结果进行编码,并将颜色标签添加到数组访问中,这使得它们在IR和源代码中以适当的颜色此外,分析J. 洛塔克岛Lhoták/理论计算机科学电子笔记107(2004)2729Fig. 1. 数组边界检查分析结果使用字符串标签以文本形式编码。当鼠标移到每个数组表达式上时,文本将显示在工具提示中3数据流分析Soot包括一个通用的定点数据流分析框架。为了实现数据流分析,框架的用户实现相关的流方程,并且框架执行固定点计算。数据流框架是为了让Soot用户实现他们自己的分析,但它也是Soot内部分析的基础。在麦吉尔大学的优化编译器课程中,学生需要使用框架来实现他们选择的分析。Soot-Eclipse插件可以可视化使用固定点框架实现的任何分析的进度。如图2所示,该插件显示分析的方法。随着定点计算的进行,分析计算的数据流事实连续显示在图形的节点在本例中,我们可视化了一个实时变量分析,因此显示了实时变量集但是,只要提供适当的方法将数据流事实转换为字符串,就可以跟踪任意分析的进程 用户界面中的按钮允许用户单步完成分析,一次执行一个节点的计算。还提供了一个后退按钮,用于撤消每个计算并在分析进程中向后移动。虽然Soot最初主要是作为一个研究框架,但它在教学中的使用已经变得越来越重要,我们希望可视化工具使它更适合这一目的。在典型的优化编译器课程中,教师通过在黑板上跟踪控制流程图的示例分析来相同的30J. 洛塔克岛Lhoták/理论计算机科学电子笔记107(2004)27图二、实时变量的定点数据流分析现在可以使用插件使用实际分析进行跟踪,学生可以按照自己的进度分析他们的选择。学生在实施和调试自己的数据流分析时面临的最大困难之一是理解在分析过程中发生了什么。能够一步一步地跟踪他们已经实现的分析,甚至向后追溯,将有望帮助他们更好地理解数据流分析,并使实现和调试它们的任务更容易,更愉快。4总结我们简要地演示了在Soot-Eclipse插件中实现的程序分析可视化工具。我们希望研究人员,教师和学生都能发现它们有助于实施和理解他们的J. 洛塔克岛Lhoták/理论计算机科学电子笔记107(2004)2731自己的方案分析。引用[1] 波米恩维尔山口、F. 吉安河 瓦莱莱湖 亨德拉和C. Verbrugge,AframeworkforoptimizingJavausing attributes,in:Java Construction,10th International Conference(CC 2001),LNCS2027,2001,pp.334-554.[2] Qian, F. ,L. Henrik 和C. Verbrugge ,A comprehensive approach to array bounds checkelimination for Java , in : Jumper Construction , 11th International Conference ,LNCS2304,2002,pp. 325-341[3] 瓦尔利雷河,E. 加尼翁湖 J. 亨德尔山口Lam,P. Pominville和V. Sundaresan,使用Soot框架优化Java字节码:可行吗?见:《建筑工程》,第九届国际会议(CC 2000),LNCS1781,2000年,第1781页。18比34