当前位置:Linux教程 - Linux文化 - 用tags/cscope看内核源代码-HOWTO

用tags/cscope看内核源代码-HOWTO


其实内核原代码的Makefile就包含了make tags/TAGS的选项, 但是生成的tags太大,因为包含了drivers等不常用的目录。

因此参照内核的Makefile文件,写了一个Makefile, 用来生成ctags/cscope/etags。

这样,可以根据自己的需要,删除和添加目录。

我以前没有用过tags/cscope,不知道有没有更好的方法。欢迎指教。 也请大家补充tags/cscope的常用的和好用的命令,技巧。

一、用法

找一个空目录,把附件Makefile拷贝进去。 然后在该目录中选择性地运行如下make命令:

注:SRCDIR用来指定内核源代码目录,如果没有指定, 则缺省为/usr/src/linux/,如

$ make

将处理/usr/src/linux下的源文件,在当前目录生成ctags, cscope

1) 只创建ctags

$ make SRCDIR=/usr/src/linux-2.6.12/ tags

2) 只创建cscope

$ make SRCDIR=/usr/src/linux-2.6.12/ cscope

3) 创建ctags和cscope

$ make SRCDIR=/usr/src/linux-2.6.12/

4) 只创建etags

$ make SRCDIR=/usr/src/linux-2.6.12/ TAGS

二、处理时包括的内核源文件:

1) 不包括drivers,sound目录 2) 不包括无关的体系结构目录 3) fs目录只包括顶层目录和ext2,proc目录

对2.6.12.1内核,这样生成的tags大约12M,cscopes大约19M

三、最简单的ctags命令

---------------------- 1) 进入

进入vim后,用

:tag func_name

跳到函数func_name

---------------------- 2) 看函数(identifier)

想进入光标所在的函数,用

CTRL + ]

---------------------- 3) 回退

回退用

CTRL + T

----------------------

我现在只会用这几个命令,请大家说说其他常用的命令。

查找标识符

:tag write_

找到以write_开头的标识符,如果有多个,继续按,直到找到想要的。

如果想跳到包含block的标识符

:tag /block

然后用来选择。

这里'/'就是告诉vim'block'是一个pattern。

如果想在以write_开头的标识符中选择一下,

:tselect /^write_

这里,'^'表示开头,同理,'$'表示末尾。

多个同名的标识符

如果某个函数有多个定义,':tag'命令会跳到第一个,如果当前文件有,则优先用这个。 然后可以跳到下一个同名的 :tnext

跳到第一个 :tfirst

跳到前count个 :[count]tprevious

跳到后count个 :[count]tnext

跳到最后一个 :tlast

你也可以在所有tagname中选择: :tselect tagname


摘自:http://www.linuxforum.net/