首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 其他教程 > 开源软件 >

动态函数调用跟踪方法

2012-07-04 
动态函数调用追踪方法??【步骤1】使用gcc编译器的-pg选项对源程序进行编译和链接,输入如下命令:?其中test.c

动态函数调用追踪方法

?


?【步骤1】使用gcc编译器的-pg选项对源程序进行编译和链接,输入如下命令:


?其中test.c文件存放在路径为/home/test,运行命令后会在该路径下生成一个默认名为“a.out”的可执行文件,当然也可以利用-o选项指定可执行文件的名字。本例的调试编译如上所示很简单,但对包含成千上万个源文件的大型开源项目进行编译时会相对复杂一些。首先需要进入项目主文件输入“./configure”命令进行编译配置检查,然后输入“make CFLAGS=-pg LDFLAGS=-pg”进行编译,最后还要输入“make install”安装项目。其中CFLAGS和LDFLAGLS分别是编译和链接标志,它们都需要加入-pg选项,否则有可能无法追踪成功。


?除上述运行结果外,还会在当前目录中生成一个名为“gmon.out”的文件。

?


?Gprof产生的字段信息解释如下所示:


?在自定义切面中,切入点匹配那些在“com.example”及其子包中的所有公共函数,但排除类“CallLogger”和切面自身中的。通知“before”封装了在每个匹配切入点的函数执行之前的逻辑处理,即将函数压入堆栈并记录下函数的调用关系。通知“after”则在匹配函数执行后进行简单的出栈处理。类“CallLogger”维护了记录函数调用的堆栈并实现了动态生成函数调用关系等操作,源码参见附件。

?

热点排行