【技术实现步骤摘要】
本专利技术涉及软件
,尤其涉及一种基于GCC(GNUCompilerCollection,GNU编译器套装)和Chromium的代码跟踪方法及系统。
技术介绍
熟悉和研究程序,最直接的方式是花时间阅读程序的源代码,可以查看到所有的函数调用过程,但是如果函数指针非常复杂,或者源代码太长且晦涩难懂,这个过程就可能很困难。为了更方便地理解程序的内部行为,以及获得有关程序优化方面的信息,例如,哪些经常调用的函数可以进行优化以获得更好的程序性能,通常会在程序中插入跟踪代码用以跟踪程序中函数的调用,这个过程也称为代码跟踪。具体来说,代码跟踪是收集函数调用的踪迹,例如函数的调用关系和调用次数,以及函数自身执行时间和子函数的调用时间等。原始的代码跟踪是通过分别在函数的入口处和退出处插入一个惟一的符号来手工检测每个函数,这个过程非常繁琐,而且很容易出错,需要对源代码进行大量修改。为简化代码跟踪过程,目前常用的代码跟踪是通过Gprof(GNUprofiler)工具自动检测程序中的各个函数,在程序中插入用于跟踪的代码片断,在执行程序时,通过Gprof的分析函数收集相关的分析数据。但是通常的Gprof代码跟踪,具有如下缺陷:会产生大量的跟踪数据,需要花时间分析,可视化程度低;对一些宏生成的函数难以添加跟踪代码,不能支持常见的C语言源文件,也不能使用C兼容的方式;而且只能得到函数的CPU使用时间,不能得到函数的CPU流逝时间,也不能 ...
【技术保护点】
一种基于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
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。