基于GCC和Chromium的代码跟踪方法及系统技术方案

技术编号:14849053 阅读:57 留言:0更新日期:2017-03-17 22:51
本申请实施例公开了一种基于GCC和Chromium的代码跟踪方法及系统。通过使用GCC编译待跟踪的程序,修改编译过程中各个函数的GIMPLE中间表示形式,在函数的GIMPLE中间表示形式中插入跟踪代码,使用跟踪代码在程序运行时记录各个函数的执行过程,生成跟踪记录文件,实现在程序中自动加入跟踪代码,以及程序运行时自动跟踪函数,生成的跟踪记录文件导入Chromium跟踪可视化工具,通过Chromium跟踪可视化工具形象地展示函数的跟踪数据,从而实现代码跟踪的可视化。

【技术实现步骤摘要】

本专利技术涉及软件
,尤其涉及一种基于GCC(GNUCompilerCollection,GNU编译器套装)和Chromium的代码跟踪方法及系统。
技术介绍
熟悉和研究程序,最直接的方式是花时间阅读程序的源代码,可以查看到所有的函数调用过程,但是如果函数指针非常复杂,或者源代码太长且晦涩难懂,这个过程就可能很困难。为了更方便地理解程序的内部行为,以及获得有关程序优化方面的信息,例如,哪些经常调用的函数可以进行优化以获得更好的程序性能,通常会在程序中插入跟踪代码用以跟踪程序中函数的调用,这个过程也称为代码跟踪。具体来说,代码跟踪是收集函数调用的踪迹,例如函数的调用关系和调用次数,以及函数自身执行时间和子函数的调用时间等。原始的代码跟踪是通过分别在函数的入口处和退出处插入一个惟一的符号来手工检测每个函数,这个过程非常繁琐,而且很容易出错,需要对源代码进行大量修改。为简化代码跟踪过程,目前常用的代码跟踪是通过Gprof(GNUprofiler)工具自动检测程序中的各个函数,在程序中插入用于跟踪的代码片断,在执行程序时,通过Gprof的分析函数收集相关的分析数据。但是通常的Gprof代码跟踪,具有如下缺陷:会产生大量的跟踪数据,需要花时间分析,可视化程度低;对一些宏生成的函数难以添加跟踪代码,不能支持常见的C语言源文件,也不能使用C兼容的方式;而且只能得到函数的CPU使用时间,不能得到函数的CPU流逝时间,也不能跟踪函数的开始时间和结束时间。
技术实现思路
为克服相关技术中代码跟踪可视化程度低的问题,本申请提供一种基于GCC和Chromium的代码跟踪方法及系统。根据本申请实施例的第一方面,提供一种基于GCC和Chromium的代码跟踪方法,包括:使用GNU编译器套装GCC编译待跟踪程序;在编译过程中修改所述待跟踪程序中各个函数的GIMPLE中间表示形式,插入跟踪代码;编译结束后,运行所述待跟踪程序;所述跟踪代码记录各个函数执行的过程,生成跟踪记录文件;将所述跟踪记录文件导入Chromium跟踪可视化工具并展示。可选的,所述的基于GCC和Chromium的代码跟踪方法中,所述插入跟踪代码为在待跟踪程序中各个函数的入口点和退出点分别插入第一分析函数和对应的第二分析函数,所述第一分析函数和第二分析函数用于记录对应的被跟踪的函数的执行过程,所述第一分析函数在每次执行对应的被跟踪的函数时调用,所述第二分析函数在每次退出对应的被跟踪的函数时调用。可选的,所述的基于GCC和Chromium的代码跟踪方法,在待跟踪程序中各个函数的异常安全推出点插入第二分析函数。可选的,所述的基于GCC和Chromium的代码跟踪方法,将被跟踪的函数包含于第一try语句中,将所述第一分析函数插入于所述第一try语句之前,将所述第二分析函数包含于对应于所述第一try语句的第一final语句中。可选的,所述的基于GCC和Chromium的代码跟踪方法,将所述第一分析函数、第一try语句和第一final语句包含于第二try语句中,在对应与第二try语句的第二final语句中包含Clobber构造器表达式,所述Clobber构造器表达式用于延长第一分析函数和第二分析函数的参数变量的声明周期至第二分析函数的调用返回为止,所述Clobber构造器表达式的类型为第一分析函数和第二分析函数的参数变量的类型。与本申请实施例的第一方面相应,根据本申请实施例的第二方面,提供一种基于GCC和Chromium的代码跟踪系统,包括:编译单元,用于使用GNU编译器套装GCC编译待跟踪程序;中间表示修改单元,用于在编译过程中修改所述待跟踪程序中各个函数的GIMPLE中间表示形式,插入跟踪代码;执行单元,用于编译结束后,运行所述待跟踪程序;跟踪记录文件生成单元,用于根据所述跟踪代码记录的各个函数的执行过程,生成跟踪记录文件;可视化单元,用于将所述跟踪记录文件导入Chromium跟踪可视化工具并展示。可选的,所述中间表示修改单元,包括:中间表示修改子单元,用于在编译过程中修改所述待跟踪程序中各个函数的GIMPLE中间表示形式;第一插入子单元,用于在编译过程中于待跟踪程序中各个函数的入口点插入第一分析函数;第二插入子单元,用于在编译过程中于待跟踪程序中各个函数的退出点插入对应的第二分析函数,其中,所述第一分析函数和第二分析函数用于记录对应的被跟踪的函数的执行过程,所述第一分析函数在每次执行对应的被跟踪的函数时调用,所述第二分析函数在每次退出对应的被跟踪的函数时调用。可选的,所述第二插入单元用于在编译过程中于待跟踪程序中各个函数的异常安全推出点插入第二分析函数。可选的,所述中间表示修改单元,包括:中间表示修改子单元,用于在编译过程中修改所述待跟踪程序中各个函数的GIMPLE中间表示形式;第一修改子单元,用于在编译过程中将被跟踪的函数包含于第一try语句中;第三插入子单元,用于在编译过程中于所述第一try语句之前插入第一分析函数;第四插入子单元,用于在编译过程中在对应于所述第一try语句的第一final语句中插入第二分析函数。可选的,所述中间表示修改单元,还包括:第二修改子单元,用于将所述第一分析函数、第一try语句和第一final语句包含于第二try语句中;第三修改子单元,用于在对应与第二try语句的第二final语句中包含Clobber构造器表达式,所述Clobber构造器表达式用于延长第一分析函数和第二分析函数的参数变量的声明周期至第二分析函数的调用返回为止,所述Clobber构造器表达式的类型为第一分析函数和第二分析函数的参数变量的类型。本申请实施例提供的技术方案可以包括以下有益效果:使用GCC编译待跟踪的程序,通过修改编译过程中各个函数的GIMPLE中间表示形式,在函数的GIMPLE中间表示形式中插入跟踪代码,使用跟踪代码在程序运行时记录各个函数的执行过程,生成跟踪记录文件,从而实现在程序中自动加入跟踪代码,以及程序运行时自动跟踪函数,由于GCC对C源文件的兼容性,本申请也具有对C源文件的兼容性。生成的跟踪记录文件导入Chromium跟踪可视化工具,通过Chromium跟踪可视化工具形象地展示函数的跟踪数据,从而实现代码跟踪的可视化。应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本申请。附图说明为了更清楚地说明本申请实施本文档来自技高网
...

【技术保护点】
一种基于GCC和Chromium的代码跟踪方法,包括:使用GNU编译器套装GCC编译待跟踪程序;在编译过程中修改所述待跟踪程序中各个函数的GIMPLE中间表示形式,插入跟踪代码;编译结束后,运行所述待跟踪程序;所述跟踪代码记录各个函数执行的过程,生成跟踪记录文件;将所述跟踪记录文件导入Chromium跟踪可视化工具并展示。

【技术特征摘要】
1.一种基于GCC和Chromium的代码跟踪方法,包括:
使用GNU编译器套装GCC编译待跟踪程序;
在编译过程中修改所述待跟踪程序中各个函数的GIMPLE中间表示形式,插入跟踪
代码;
编译结束后,运行所述待跟踪程序;
所述跟踪代码记录各个函数执行的过程,生成跟踪记录文件;
将所述跟踪记录文件导入Chromium跟踪可视化工具并展示。
2.如权利要求1所述的基于GCC和Chromium的代码跟踪方法,所述插入跟踪代
码为在待跟踪程序中各个函数的入口点和退出点分别插入第一分析函数和对应的第二分
析函数,所述第一分析函数和第二分析函数用于记录对应的被跟踪的函数的执行过程,
所述第一分析函数在每次执行对应的被跟踪的函数时调用,所述第二分析函数在每次退
出对应的被跟踪的函数时调用。
3.如权利要求2所述的基于GCC和Chromium的代码跟踪方法,在待跟踪程序中
各个函数的异常安全推出点插入第二分析函数。
4.如权利要求2所述的基于GCC和Chromium的代码跟踪方法,将被跟踪的函数
包含于第一try语句中,将所述第一分析函数插入于所述第一try语句之前,将所述第二
分析函数包含于对应于所述第一try语句的第一final语句中。
5.如权利要求4所述的基于GCC和Chromium的代码跟踪方法,将所述第一分析
函数、第一try语句和第一final语句包含于第二try语句中,在对应与第二try语句的
第二final语句中包含Clobber构造器表达式,所述Clobber构造器表达式用于延长第一
分析函数和第二分析函数的参数变量的声明周期至第二分析函数的调用返回为止,所述
Clobber构造器表达式的类型为第一分析函数和第二分析函数的参数变量的类型。
6.一种基于GCC和Chromium的代码跟踪系统,包括:
编译单元,用于使用GNU编译器套装GCC编译待跟踪程序;
中间表示修改单元,用于在编译过程中修改所述待跟踪程序中各个函数的GIMPLE
中间表示形式,插入跟踪代码;
执行单元,用于编译结束后,运行所述待跟踪程序;
跟踪记录文件生成单元,用于根据所述跟踪代码记录的各个函数...

【专利技术属性】
技术研发人员:林作健
申请(专利权)人:广州市动景计算机科技有限公司
类型:发明
国别省市:广东;44

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

1