免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2043 | 回复: 6
打印 上一主题 下一主题

[函数] 用工具测试文件使用的函数数量 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2007-04-19 10:00 |只看该作者 |倒序浏览
请问有谁用过什么工具测试文件使用的函数数量吗?
这主要是为了估计一个移植项目 的开发规模。谢谢啦

论坛徽章:
0
2 [报告]
发表于 2007-04-19 10:14 |只看该作者
没人使用过着这种工具吗

论坛徽章:
1
2015年辞旧岁徽章
日期:2015-03-03 16:54:15
3 [报告]
发表于 2007-04-19 10:22 |只看该作者
能编译吗?
能编译的话,编译之后 nm 一下就出来了。
直接分析源代码的话,其实也不是不可以,就是麻烦了点儿。试试 yacc 吧。
再要不下载一个 gcc,修改一下语法分析那部分,打印个日志之类的。

论坛徽章:
0
4 [报告]
发表于 2007-04-19 10:33 |只看该作者
是可以编译的。
谢谢 ,我先试试。

论坛徽章:
95
程序设计版块每日发帖之星
日期:2015-09-05 06:20:00程序设计版块每日发帖之星
日期:2015-09-17 06:20:00程序设计版块每日发帖之星
日期:2015-09-18 06:20:002015亚冠之阿尔艾因
日期:2015-09-18 10:35:08月度论坛发贴之星
日期:2015-09-30 22:25:002015亚冠之阿尔沙巴布
日期:2015-10-03 08:57:39程序设计版块每日发帖之星
日期:2015-10-05 06:20:00每日论坛发贴之星
日期:2015-10-05 06:20:002015年亚冠纪念徽章
日期:2015-10-06 10:06:482015亚冠之塔什干棉农
日期:2015-10-19 19:43:35程序设计版块每日发帖之星
日期:2015-10-21 06:20:00每日论坛发贴之星
日期:2015-09-14 06:20:00
5 [报告]
发表于 2007-04-19 10:42 |只看该作者
原帖由 flw 于 2007-4-19 10:22 发表
能编译吗?
能编译的话,编译之后 nm 一下就出来了。
直接分析源代码的话,其实也不是不可以,就是麻烦了点儿。试试 yacc 吧。
再要不下载一个 gcc,修改一下语法分析那部分,打印个日志之类的。

不用这么夸张吧?参考下 gprof(1)

论坛徽章:
0
6 [报告]
发表于 2007-04-19 11:01 |只看该作者
原帖由 MMMIX 于 2007-4-19 10:42 发表

不用这么夸张吧?参考下 gprof(1)


确实很夸张。
sourceforge上有个开源项目叫cflow,它可以把你源文件中的函数调用关系生成图片,如果你只想统计函数数量的话,写个脚本分析结果是容易的。
类似如下:

  1. iosapic_init() <void viosapic_init (struct domain *d) at viosapic.c:330>:
  2.     domain_viosapic()
  3.     viosapic_reset() <void viosapic_reset (struct viosapic *viosapic) at viosapic.c:273>:
  4.         memset()
  5.         spin_lock_init()
  6. viosapic_read() <unsigned long viosapic_read (struct vcpu *v,unsigned long addr,unsigned long length) at viosapic.c:174>:
  7.     vcpu_viosapic()
  8.     viosapic_read_indirect() <unsigned long viosapic_read_indirect (struct viosapic *viosapic,unsigned long addr,unsigned long length) at viosapic.c:137>:
  9.         gdprintk()
  10. viosapic_set_irq() <void viosapic_set_irq (struct domain *d,int irq,int level) at viosapic.c:286>:
  11.     domain_viosapic()
  12.     spin_lock()
  13.     service_iosapic() <void service_iosapic (struct viosapic *viosapic) at viosapic.c:101>:
  14.         iosapic_get_highest_irq() <int iosapic_get_highest_irq (struct viosapic *viosapic) at viosapic.c:77>:
  15.             ia64_fls()
  16.         viosapic_deliver() <void viosapic_deliver (struct viosapic *viosapic,int irq) at viosapic.c:40>:
  17.             vlsapic_lid_to_vcpu()
  18.             viosapic_domain()
  19.             vlsapic_set_irq()
  20.             vcpu_kick()
  21.             gdprintk()
  22.     spin_unlock()
  23. viosapic_set_pci_irq() <void viosapic_set_pci_irq (struct domain *d,int device,int intx,int level) at viosapic.c:322>:
  24.     hvm_pci_intx_gsi()
  25.     viosapic_set_irq() <void viosapic_set_irq (struct domain *d,int irq,int level) at viosapic.c:286>:
  26.         domain_viosapic()
  27.         spin_lock()
  28.         service_iosapic() <void service_iosapic (struct viosapic *viosapic) at viosapic.c:101>:
  29.             iosapic_get_highest_irq() <int iosapic_get_highest_irq (struct viosapic *viosapic) at viosapic.c:77>:
  30.                 ia64_fls()
  31.             viosapic_deliver() <void viosapic_deliver (struct viosapic *viosapic,int irq) at viosapic.c:40>:
  32.                 vlsapic_lid_to_vcpu()
  33.                 viosapic_domain()
  34.                 vlsapic_set_irq()
  35.                 vcpu_kick()
  36.                 gdprintk()
  37.         spin_unlock()
  38. viosapic_write() <void viosapic_write (struct vcpu *v,unsigned long addr,unsigned long length,unsigned long val) at viosapic.c:244>:
  39.     vcpu_viosapic()
  40.     viosapic_write_indirect() <void viosapic_write_indirect (struct viosapic *viosapic,unsigned long addr,unsigned long length,unsigned long val) at viosapic.c:202>:
  41.         gdprintk()
  42.     viosapic_update_EOI() <void viosapic_update_EOI (struct viosapic *viosapic,int vector) at viosapic.c:117>:
  43.         get_redir_num() <int get_redir_num (struct viosapic *viosapic,int vector) at viosapic.c:89>:
  44.         gdprintk()
复制代码

论坛徽章:
0
7 [报告]
发表于 2007-04-19 13:33 |只看该作者
谢谢啦,完成了
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP