- 1、本文档共25页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
《unix-os教学课件》第六章 unix系统编程基础 - 补充2 -gprof-gcov
gprof,gcov资料 电子科技大学 计算机学院.软件学院 目录 Gprof 简介 Gprof 实现原理 Gprof 使用方法 编译程序 运行程序 使用Gprof查看结果—命令格式 使用Gprof的完整例子 Gprof产生的信息解析 Gprof使用注意 Gprof 简介 Gprof实际上只是一个用于读取Profile结果文件的工具。 Gprof采用混合方法来收集程序的统计信息,他使用检测方法,在编译过程中在函数入口处插入计数器用于收集每个函数的被调用情况和被调用次数;也使用采样方法,在运行时按一定间隔去检查程序计数器并在分析时找出程序计数器对应的函数来统计函数占用的时间。 Gprof 实现原理 通过在编译和链接你的程序的时候(使用 -pg 编译和链接选项),gcc 在你应用程序的每个函数中都加入了一个名为mcount ( or “_mcount” , or “__mcount” , 依赖于编译器或操作系统)的函数。 应用程序里的每一个函数都会调用mcount, 而mcount 会在内存中保存一张函数调用图,并通过函数调用堆栈的形式查找子函数和父函数的地址。这张调用图也保存了所有与函数相关的调用时间,调用次数等等的所有信息。 Gprof 使用方法 编译程序 使用gcc/cc编译和链接时需要加入-pg选项。 使用ld链接时需要用/lib/gcrt0.o代替crt0.o作为第一个input文件。 如果要调试libc库需要使用-lc_p代替-lc参数。 Gprof 使用方法 运行程序 正常运行编译好的程序,程序正常结束后会在当前目录生成统计信息文件gmon.out。 程序必须正常退出(调用exit或从main中返回)才能生成统计信息。 当前目录下如果有另外叫gmon.out的文件,内容将被本次运行生成的统计信息覆盖,多次运行统一程序请将前一次的gmon.out改名。 Gprof 使用方法 使用Gprof查看结果—命令格式 gprof options [executable-file [profile-data-files...]] [ outfile] 输出相关: symspec 表示需要加入或排除的函数名 a)?????????-A[symspec]或--annotated-source[=symspec]:进行源码关 联,只关联symspec指定的函数,不指定为全部关联。 b)????????-I dirs或--directory-path=dirs:添加搜索源码的文件夹,修改 环境变量GPROF_PATH也可以。 c)?????????-p[symspec]或--flat-profile[=symspec]:默认选项,输出统计 信息,只统计symspec指定的函数,不指定为全部统计。 Gprof 使用方法 使用Gprof查看结果—命令格式 d)????????-P[symspec]或--no-flat-profile[=symspec]:排除统计symspec 指定的函数 e)?????????-q[symspec]或--graph[=symspec]:默认选项,输出函数调用 信息,只统计symspec指定的函数,不指定为全部统计。 f)?????????-Q[symspec]或--no-graph[=symspec]:排除统计symspec指定 的函数 g)????????-b或--brief:不输出对各个参数含义的解释; Gprof 使用方法 使用Gprof查看结果—命令格式 分析相关: a)?????????-a或--no-static:定义为static的函数将不显示,函数的被 调用次数将被计算在调用它的不是static的函数中; b)????????-m num或--min-count=num:不显示被调用次数小于num 的函数; c)?????????-z或--display-unused-functions:显示没有被调用的函数 Gprof 使用方法 Gprof使用的完整例子 编译测试文件: gcc –g –o test test.c –pg 执行程序:./test 查看统计信息:gprof -b -A -p -q test gmon.out pg 下面是一个运行Gprof后的截图 Gprof 使用方法 Gprof 产生的信息解析 Flat profile: ?%??????????????????????? the percentage of the total running time of thetime???????????????????? program used by this function.??? ?????????????????????? 函数
文档评论(0)