使用Gnu gprof进行Linux平台下的程序分析

本文深入解析Gprof命令的使用方法,包括如何编译代码、运行程序生成gmon.out文件,以及如何使用gprof命令进行程序分析。同时,提供了vi编辑器的基础操作指南,涵盖命令模式、插入模式、可视模式以及常用快捷键,帮助开发者高效地进行代码编辑。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

http://www.pcdog.com/edu/linux/18/10/u231314_1.html
http://www.pcdog.com/edu/linux/18/10/u231314_2.html
http://www.pcdog.com/edu/linux/18/10/u231314_3.html


1. Compile source .c code for analysis, Create executable file:
        >> gcc -pg test.c -o test 

2. Launch executable file, Create gmon.out
        >> ./test

3. Use gmon.out to analysis:
        >>  gprof -b test gmon.out | less
    or: >>  gprof -b test gmon.out | more

4. 
    
     

常用的Gprof 命令选项解释:
 
-b不再输出统计图表中每个字段的详细描述。

-p 只输出函数的调用图(Call graph 的那部分信息)。

-q 只输出函数的时间消耗列表。

-E Name不再输出函数Name 及其子函数的调用图,此标志类似于 -e 标志,但它在总时间和百分比时间的计算中排除了由函数Name 及其子函数所用的时间。

-e Name 不再输出函数Name 及其子函数的调用图(除非它们有未被限制的其它父函数)。可以给定多个 -e 标志。一个 -e 标志只能指定一个函数。

-F Name 输出函数Name 及其子函数的调用图,它类似于 -f 标志,但它在总时间和百分比时间计算中仅使用所打印的例程的时间。可以指定多个 -F 标志。一个 -F 标志只能指定一个函数。-F 标志覆盖 -E 标志。

-f Name输出函数Name 及其子函数的调用图。可以指定多个 -f 标志。一个 -f 标志只能指定一个函数。

-z 显示使用次数为零的例程(按照调用计数和累积时间计算)。

English Reference:http://www.cs.utah.edu/dept/old/texinfo/as/gprof.html#SEC4


--------附: vi使用方法:---------


  vi 的三种命令模式  


Command(命令)模式,用于输入命令
  Insert(插入)模式,用于插入文本
  Visual(可视)模式,用于视化的的高亮并选定正文
  光标移动  
  当我们按ESC进入Command模式后,我们可以用下面的一些键位来移动光标;
  j 向下移动一行
  k 向上移动一行
  h 向左移动一个字符
  l 向右移动一个字符
  ctrl+b 向上移动一屏
  ctrl+f 向下移动一屏
  向上箭头 向上移动
  向下箭头 向下移动
  向左箭头 向左移动
  向右箭头 向右移动
  我们编辑一个文件时,对于 j、k、l和h键,还能在这些动作命令的前面加上数字,比如 3j,表示向下移动3行。
  /# +Enter #为查找的内容 
  插入模式(文本的插入)
  
  i 在光标之前插入
  a 在光标之后插入
  I 在光标所在行的行首插入
  A 在光标所在行的行末插入
  o 在光标所在的行的下面插入一行
  O 在光标所在的行的上面插入一行
  s 用输入的文本替换光标所在字符
  S 用输入的文本替换光标所在行 
  文本内容的删除操作;
  
  x 一个字符
  #x 删除几个字符,#表示数字,比如3x
  dw 删除一个单词
  #dw 删除几个单词,#用数字表示,比如3dw表示删除三个单词
  dd 删除一行;
  #dd 删除多个行,#代表数字,比如3dd 表示删除光标行及光标的下两行
  d$ 删除光标到行尾的内容
  J 清除光标所处的行与下一行之间的换行,行尾没有空格的话会自动添加一个空格。
  #J 表示合并#(数字)行。
  退出保存;
  在命令模式下按 shift+: 文本底端出现冒号
  :w 保存;
  :w filename 另存为filename;
  :wq! 保存退出;
  :wq! filename 注:以filename为文件名保存后退出;
  :q! 不保存退出;
  :x 应该是保存并退出 ,功能和:wq!相同
  撤销操作
  u命令取消最近一次的操作,可以使用多次来恢复原有的操作[1]
  U取消所有操作
  Ctrl+R可以恢复对使用u命令的操作
  复制操作
  yy命令复制当前整行的内容到vi缓冲区
  yw复制当前光标所在位置到单词尾字符的内容到vi缓存区,相当于复制一个单词
  y$复制光标所在位置到行尾内容到缓存区
  y^复制光标所在位置到行首内容到缓存区
  #yy例如:5yy就是复制5行
  #yw例如:2yw就是复制两个单词
  如果要复制第m行到第n行之间的内容,可以在末行模式中输入m,ny例如:3,5y复制第三行到第五行内容到缓存区。
  查找和替换
  vi的查找和替换功能主要在末行模式完成:
  至上而下的查找
  / 要查找的字符串,其中/代表从光标所在位置起开始查找,例如:/ work
  至下而上的查找
  ?要查找的字符串 例如:? work
  替换
  :s/old/new用new替换行中首次出现的old
  : s/old/new/g 用new替换行中所有出现的old
  :#,# s/old/new/g用new替换从第#行到第#行中出现的old
  :% s/old/new/g用new替换整篇中出现的old
  如果替换的范围较大时,在所有的命令尾加一个c命令,强制每个替换需要用户进行确认,例如:s/old/new/c 或s/old/new/gc
  恢复文件  
 vi在编辑某一个文件时,会生成一个临时文件,这个文件以 . 开头并以 .swp结尾。正常退出该文件自动删除,如果意外退出例如忽然断电,该文件不会删除,我们在下次编辑时可以选择一下命令处理:
  O只读打开,不改变文件内容
  E继续编辑文件,不恢复.swp文件保存的内容
  R将恢复上次编辑以后未保存文件内容
  Q退出vi
  D删除.swp文件
  或者使用vi -r 文件名来恢复未保存的内容




基于Spring Boot搭建的一个多功能在线学习系统的实现细节。系统分为管理员和用户两个主要模块。管理员负责视频、文件和文章资料的管理以及系统运营维护;用户则可以进行视频播放、资料下载、参与学习论坛并享受个性化学习服务。文中重点探讨了文件下载的安全性和性能优化(如使用Resource对象避免内存溢出),积分排行榜的高效实现(采用Redis Sorted Set结构),敏感词过滤机制(利用DFA算法构建内存过滤树)以及视频播放的浏览器兼容性解决方案(通过FFmpeg调整MOOV原子位置)。此外,还提到了权限管理方面自定义动态加载器的应用,提高了系统的灵活性和易用性。 适合人群:对Spring Boot有一定了解,希望深入理解其实际应用的技术人员,尤其是从事在线教育平台开发的相关从业者。 使用场景及目标:适用于需要快速搭建稳定高效的在线学习平台的企业或团队。目标在于提供一套完整的解决方案,涵盖从资源管理到用户体验优化等多个方面,帮助开发者更好地理解和掌握Spring Boot框架的实际运用技巧。 其他说明:文中不仅提供了具体的代码示例和技术思路,还分享了许多实践经验教训,对于提高项目质量有着重要的指导意义。同时强调了安全性、性能优化等方面的重要性,确保系统能够应对大规模用户的并发访问需求。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值