首页 技术 正文
技术 2022年11月10日
0 收藏 861 点赞 2,886 浏览 1388 个字

calltree是在linux下面看c代码(尤其是复杂的内核代码)的神器。

推荐  calltree+vim + ctags + cscope + taglist 【 vim: 搭建vim看代码的环境   http://www.cnblogs.com/mylinux/p/5013588.html】

  或者 calltree + source insight

source insight能方便地查看向上和向下的函数(变量等)调用关系,并且支持多种语言,几乎是无可替代的。但调用深度太大的时候,人就记不住了,这个时候calltree可以生成一个全局的调用图,便于很快掌握代码框架。

如想看内核代码start_kernel干了些什么:

#calltree -np -b  list=start_kernel    depth=3 `find ./init/ ./kernel/ -name “*.c”` > maps

#vi maps

start_kernel:
| WARN
| acpi_early_init
| anon_vma_init
| boot_cpu_init
| | set_cpu_active
| | | cpumask_clear_cpu
| | | cpumask_set_cpu
| | | to_cpumask
| | set_cpu_online
| | | cpumask_clear_cpu
| | | cpumask_set_cpu
| | | to_cpumask
| | set_cpu_possible
| | | cpumask_clear_cpu
| | | cpumask_set_cpu
| | | to_cpumask
| | set_cpu_present
| | | cpumask_clear_cpu
| | | cpumask_set_cpu
| | | to_cpumask
| | smp_processor_id
| boot_init_stack_canary
| buffer_init
| build_all_zonelists
| calibrate_delay
| | calibrate_delay_converge
| | | __delay
| | calibrate_delay_direct
| | | printk
| | | read_current_timer
| | | time_before_eq
| | calibrate_delay_is_known

下载:
    calltree-2.3.tar.bz2 https://img.zhankr.net/arzmvkwxyez79032.png
       
    
    下面介绍一下各选项:
    -b 就是那个竖线了,很直观地显示缩进层次。
    -g 打印内部函数的所属文件名及行号,外部函数所属文件名和行号也是可打印的,详man
    -np 不要调用c预处理器,这样打印出的界面不会很杂乱,但也可能会产生错误哦,如果我们只看函数的调用关系的话,不会有大问题。
    -m 告诉程序从main开始
    还有一个重要的选项是listfunction ,缩写是lf,用来只打印某个函数中的调用,用法是: lf=your_function
    depth=#选项: 例如: calltree -gb -np -m bind9/bin/named/*.[c.h] depth=2 > codecalltree.txt

注意:

  调用关系一般比较复杂,最好设置好(1)想要关心的函数(2)调用深度(3)关心的目录,否则又会引入过多无关选项,干扰视线。

相关推荐
python开发_常用的python模块及安装方法
adodb:我们领导推荐的数据库连接组件bsddb3:BerkeleyDB的连接组件Cheetah-1.0:我比较喜欢这个版本的cheeta…
日期:2022-11-24 点赞:878 阅读:9,078
Educational Codeforces Round 11 C. Hard Process 二分
C. Hard Process题目连接:http://www.codeforces.com/contest/660/problem/CDes…
日期:2022-11-24 点赞:807 阅读:5,553
下载Ubuntn 17.04 内核源代码
zengkefu@server1:/usr/src$ uname -aLinux server1 4.10.0-19-generic #21…
日期:2022-11-24 点赞:569 阅读:6,402
可用Active Desktop Calendar V7.86 注册码序列号
可用Active Desktop Calendar V7.86 注册码序列号Name: www.greendown.cn Code: &nb…
日期:2022-11-24 点赞:733 阅读:6,177
Android调用系统相机、自定义相机、处理大图片
Android调用系统相机和自定义相机实例本博文主要是介绍了android上使用相机进行拍照并显示的两种方式,并且由于涉及到要把拍到的照片显…
日期:2022-11-24 点赞:512 阅读:7,814
Struts的使用
一、Struts2的获取  Struts的官方网站为:http://struts.apache.org/  下载完Struts2的jar包,…
日期:2022-11-24 点赞:671 阅读:4,898