linux系统下用vim+ctags+cscope查看源码


ctags 用于把关键字生成一个索引表,在vim里可直接使用"ta 关键字"在索引表里查找并定位.
cscope 也是生成索引表,在vim里使用"cs xx xx xx "来查找

如查看ffmpeg-3.0的源码:
	
	1). 在终端进入源码目录,输入"ctags -R *" // 会在当前目录下生成索引表文件, 文件名为tags
       如果源码目录下有多少语言的源文件,可通过指定语言与扩展名的方法生成索引,如:
       ctags --langmap=c:.c.h --languages=c -R -f .tags
	
	2). 在终端使用,需确保终端当前工作目录是在索引表文件tags的所在目录(注意需确保/etc/vimrc里没有"set tags=xx"的语句).
	    如查看"av_register_all"函数, 则打开vim后,输入":ta av_register_all", 按回键后可以直接定位到函数体的所在源文件。
	    当查看的内容出现多个选择时,输入前面的序号即可跳转到相应的源码文件。

	    在vim里,按"ctrl+g"可查看当前的源文件名, "ctrl+o"可跳回上次浏览的位置.
		    当标移动到要查看的关键字后,按"ctrl+]"直接查看.

	// vim+ctags 只适合查看类型的定义,函数体等。并不适合如需查看一个函数在哪些地方被调用了,又被哪些函数调用,所以还需要用cscope命令

	3). 使用cscope命令生成索引表
	    终端命令:  
		   find ./ -name "*.h" -o -name "*.c"   >  cscope.files   //在当前目录下查找*.h, *.c文件,并把相应的文件及路径输出到cscope.file文件里
		   cscope -bkq   // 让cscope根据 cscope.file文件里的文件列表生成索引表(cscope.in.out  cscope.out     cscope.po.out
)

	
	4). cscope在vim里的用法
	    打开vim后, 输入":cs"确认后会弹出帮助说明:
		cscope commands:
		add  : Add a new database             (Usage: add file|dir [pre-path] [flags])
		find : Query for a pattern            (Usage: find c|d|e|f|g|i|s|t name)
		       c: Find functions calling this function
		       d: Find functions called by this function
		       e: Find this egrep pattern
		       f: Find this file
		       g: Find this definition
		       i: Find files #including this file
		       s: Find this C symbol
		       t: Find this text string
		help : Show this message              (Usage: help)
		kill : Kill a connection              (Usage: kill #)
		reset: Reinit all connections         (Usage: reset)
		show : Show connections               (Usage: show)
		Press ENTER or type command to continue
	
	常用cs命令:
	   "cs add  ./"是用于增加当前目录下的索引表

	   "cs  find  c 函数名" 查看哪些函数调用指定的函数名

	   "cs  find  d 函数名" 查看指定的函数名调用了哪些函数

	   "cs find g 类型/函数" 查看类型的定义或函数体
	
	   "cs find t 字符串"   按字符串内容来查找相应的关键字

//
在一些源码工程里,如uboot, linux kernel里:
	直接执行下面命令即可产生相应的索引表:
		   make tags
		   make cscope

查看linux内核源码还可以通过"man 9 内核里的函数"来查看说明.
需要在linux内核源码目录下:

make mandocs ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf-
make installmandocs ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf-


增加vim补全功能, 如内核路径在/disk3/h3_kernel目录下:
vim /etc/vimrc //修改vim配置文件, 在文件尾增加以下内容

set path+=/disk3/h3_kernel/include/
set path+=/disk3/h3_kernel/arch/arm/include/
set path+=/disk3/h3_kernel/arch/arm/mach-sunxi/include/

保存退出后,在vim写代码时,只要写出前几个字母后按"ctrl + p"即可显示出补全内容

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值