当前位置: 首页 > 专利查询>浙江大学专利>正文

一种源代码级别程序结构的可视化方法技术

技术编号:3915136 阅读:288 留言:0更新日期:2012-04-11 18:40
本发明专利技术公开了一种源代码级别程序结构的可视化方法,该方法可以对不同编程语言编写的源代码的词法、语法、语义分析,并能够深层次剖析程序结构,以图形化的形式在源代码级别将各种分析结构,诸如函数调用图、控制流图、数据流图、强连通区域、支配树等信息显示出来;本发明专利技术提出的方法和传统的针对具体编程语言、仅显示控制流的可视化方法相比具有更好的通用性、扩展性以及更为强大的程序结构剖析能力。

【技术实现步骤摘要】

本专利技术属于计算机
,涉及源代码级别程序结构的可视化方法,尤 其涉及一种对编译器产生的中间表达式所携带的调试信息进行分析,并在源代 码级别将程序结构以图形化的形式显示出来的实现方法。
技术介绍
程序结构的可视化方法是指将程序内部的逻辑结构以图形的方式显示出 来。程序的逻辑结构主要包括两类控制关系和数据关系。控制关系主要是指 函数内部的控制流图以及函数间的调用关系,数据关系主要是指函数内部的数 据流图。程序结构的可视化方法能够将程序的逻辑结构以图形这种直观的方式 展现出来,有助于开发人员了解程序结构,降低问题的分析难度,提高开发效率。目前的程序结构可视化方法主要是针对某一种具体的编程语言(比如Java, C, 0++等),对其源代码进行语义分析,特别是确定函数边界,条件分支和循环 语句,然后根据这些影响控制流的语句确定源代码中基本块的范围以及基本块 之间的控制依赖关系,并最终以图形的形式将这种控制依赖关系表达出来。该 方法的缺陷有三点1.不具备通用性,如果分析目标使用不同的编程语言编写, 那么必须开发针对不同语言的分析工具,导致开发成本升高。2.功能单一,只 能显示程序的控制关系,由于无法利用编译器的分析结果导致无法深入显示程 序的内部结构。此外,目前编译器的分析结果一般是以中间表达式 (Intermediate ^presentation,简称IR)或者文字输出的形式进行描述的,这 增加了非编译器专业人士理解分析结果的难度。
技术实现思路
本专利技术的目的是针对上述传统程序可视化方法的缺陷,提供一种源代码级 别程序结构的可视化方法。该方法并不局限于单一的编程语言,能够使用统一 的方式处理多种不同类型编程语言编写的代码。其基本实现方法是使用编译器 前端在加入调试信息的前提下对源代码进行编译,将不同编程语言编写的源代 码转化为编译器定义的IR。然后对包含调试信息的IR进行分析以确定IR与源 代码之间对应关系,并以此为基础利用编译器的分析功能产生由IR表述的程序 结构分析结果,之后将该结果转化为源代码表述的图形描述文件。图形描述文 件 的 格 式 为 Graphviz ( Graph Visualization Software , http:〃www. gr即hviz. org/)定义的dot文件格式。最后利用Graphviz中的dot4工具将图形描述文件转化为一定格式的图片,比如jpg、 png等。编译器(比如 gcc等)可以进行控制流、过程内数据流,过程间调用关系等等多种形式的分析, 本专利技术可以对满足基于数据结构中定义的图结构要求的编译器分析结果进行可 视化。本专利技术的目的是这样达到的 一种对调试信息进行解析确定IR和源代码之 间的映射关系并以图形化的形式显示程序结构的方法,其具体特征是在编译器模块(Compiler Module,简称CM),源代码管理器模块(Source Code Manager Module,简称SCMM),调试信息处理器模块(Debug Information Processor Module,简称DIPM),图形生成器模块(Graph Generator Module,简称GGM) 这四个模块中完成对源代码程序结构的图形化显示。其基本步骤是-步骤l)产生目标文件OBJ使用CM在加入产生调试信息选项的条件下编译待处理的源代码,产生IR 形式的目标文件0BJ。该步骤的目的在于利用编译器将各种使用不同语言编写的 源代码转化为CM定义的统一 IR形式,有助于提高本方法的通用性;同时完成 了词法、语法和语义分析,有助于利用编译器对程序结构深入剖析。步骤2)解析配置文件读取配置文件,设置影响后续步骤的参数,主要包括确定待分析的函数列 表以及产生的可视化图形文件的属性。步骤1和步骤2均完成后转入步骤3。 步骤3)建立源代码查找表启动源代码管理器模块SCMM,建立源代码査找表(Source Code Lookup-Table,简称SCLT),以保存OBJ中的IR代码和源代码之间的对应关系。 步骤4)产生可视化的程序分析结果运行图形生成器模块GGM,产生程序结构的可视化图形文件。其基本过程为 首先由CM对FimcList中的各函数进行用户要求的程序结构分析。然后由GGM 驱动DIPM利用SCLT中的信息将分析结果转化源代码形式的图模型,并最终产 生可视化的图形文件。本专利技术的有益效果是,本方法基于已有的编译器模块,能够良好的利用编 译器前端将其所支持的各种不同的编程语言转化为统一的中间表达式,然后对 中间表达式进行处理,无须针对不同的编程语言编写不同的分析工具。此外, 本方法可以结合编译器自带的分析功能,将各种满足图结构的分析结果转化为 源代码级别的可视化形式。这有助于帮助普通不具有编译器专业背景的程序开 发人员直观地了解代码的结构。本专利技术提出的方法和传统的针对具体编程语言、 仅显示控制流的可视化方法相比具有更好的通用性、扩展性以及更为强大的程序结构剖析能力。 附图说明图1是本专利技术方法处理过程的流程图; 图2是CM的流程图; 图3是配置文件示例说明图; 图4是SC画的流程图5是SCMM建立SCLT的流程图6是GGM的流程图7是DIPM的流程图8是消除冗余语句的流程图9是消除空节点的流程图10是控制流分析的可视化结果示例图。具体实施例方式下面结合附图对本专利技术作进一步的详细说明,本专利技术的目的和效果将变得 更加明显。本专利技术共包括四个模块编译器模块CM,源代码管理器模块SCMM,调试信 息处理器模DIPM,图形生成器模块GGM。本专利技术提出的方法是利用这四个模块, 首先将源代码通过CM转化为IR形式,然后读取配置文件确定用户所要分析的 函数列表以及所要产生的图形属性。之后对IR进行分析,启动SCMM解析其中 的调试信息,确定IR语句和源代码之间的对应关系。在此基础上,使用CM得 到用户指定的IR形式程序结构分析结果。之后启动GGM,利用DIPM将IR形式 的分析结果转化为源代码表述的图模型,并最终产生对应的图形文件。图1是 本专利技术提出的源代码级别程序结构可视化方法的处理过程的流程图,其中椭圆 表示数据模块,矩形表示具体操作和步骤,菱形表示条件判断。本专利技术共包括 四个步骤,步骤之间的中转数据模块共有七种源代码文件集合,配置文件, CM编译源代码之后产生的目标文件OBJ,分析配置文件得到的函数列表FuncList 和图形属性GraphAttr,由SCMM分析源文件建立起来的SCLT,以及最终产生的 图形文件。每个步骤具体实现细节如下所示步骤l)产生目标文件OBJ本步骤的实现是由编译器模块CM实现的。CM的目的在于:将待处理的源代码转化为具有统一 IR格式的目标文件0BJ, 同时能够接收GGM的调用根据用户要求进行对应的程序结构分析。CM包括以下 功能词法分析,语法分析,语义分析,中间代码生成,程序结构分析。其基本作用有两个1.将源代码转化为IR; 2.在IR级别分析程序结构,包括控制 流分析、函数调用图分析、过程内数据流分析、过程间数据流分析、强连通区 域确定以及支配树(Dominator Tree)的产生等。CM可以使用已有的成熟编译 器系统,比女口 gcc、 llvm (Low Level 本文档来自技高网...

【技术保护点】
一种源代码级别程序结构的可视化方法,系统包括编译器模块CM、源代码管理器模块SCMM、调试信息处理器模DIPM和图形生成器模块GGM。其特征在于,该方法包括以下步骤: (1)产生目标文件OBJ:编译器模块CM在加入产生调试信息选项的条 件下编译待处理的源代码,产生IR形式的目标文件OBJ。 (2)解析配置文件:读取配置文件,设置影响后续步骤的参数FuncList、GraphAttr,确定待分析的函数列表以及产生的可视化图形文件的属性。该配置文件包含两方面的内容:其一 为所要分析的函数列表,保存在FuncList中;其二为对分析结果进行描述的图形的属性,保存在GraphAttr中。 (3)建立源代码查找表:启动源代码管理器模块SCMM,建立源代码查找表,以保存OBJ中的IR代码和源代码之间的对应关系 。 (4)产生可视化的程序分析结果:运行图形生成器模块GGM,产生程序结构的可视化图形文件。

【技术特征摘要】

【专利技术属性】
技术研发人员:陶文质史册姚懿鹏徐志远李橙
申请(专利权)人:浙江大学
类型:发明
国别省市:86[]

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1