您的位置:首页 > 运维架构

内核源码阅读vim+cscope+ctags+taglist

2013-11-21 11:04 447 查看
杜斌博客:http://blog.db89.org/kernel-source-read-vim-cscope-ctags-taglist/

武特博客:http://edsionte.com/techblog/archives/1689

在linux下我们常用的就是vim+cscope+ctags+taglist组合,下来一一介绍。

1. vim

这个只要有linux系统就OK了。但是ubuntu系统安装后默认的是vi,所以还得安装一下vim:

安装Vim

1

sudo apt-getinstall vim

顺便可以配置一下vim这样的话,代码会高亮的显示出来,方便阅读源码。

vim配置详见:http://blog.db89.org/my-vim-configuration-file/

2. cscope

cscope是一个源码阅读工具,现在大多数linux系统源里都有这个软件,可以直接用yum或者apt来安装,或者下载源码来进行安装。

使用apt系统的使用一下命令:

apt安装cscope

1

sudo apt-getinstall cscope

使用yum的系统使用以下命令:

yum安装Vim

1

yum install cscope

用源码安装使用参看一下命令:

附:源码编译教程:http://blog.db89.org/under-linux-compile-the-basic-steps-of-the-software-source-code/

附:cscope源码下载地址:http://cscope.sourceforge.net/

附:cscope常用命令:http://blog.db89.org/the-cscope-commonly-command/

源码安装cscope

1
2
3
4
5

./configure--prefix=/usr

sudo make

sudo makeinstall

安装好了就是配置,在kernel.org下载需要的源码,解压后,在该目录下执行:

建立索引

1

cscope-Rbkq

其中:

1
2
3
4
5
6
7

R表示把所有子目录里的文件也建立索引

b表示cscope不启动自带的用户界面,而仅仅建立符号数据库

q生成cscope.in.out和cscope.po.out文件,加快cscope的索引速度

k在生成索引文件时,不搜索/usr/include目录

3. ctags

ctags是一个生成链接的一款软件,这个的安装和cscope是一样的过程。

安装ctags

1

sudo apt-getinstall ctags

同样的配置,在源码目录下执行:

建立索引

1

ctags-R

4. taglist

taglist是一款vim的插件,它能够将一个文件中的变量,宏,函数单独的提出来,再加上分屏功能,作用就类似于vc下那个编辑器。

附:taglist下载地址:http://www.vim.org/scripts/script.php?script_id=273

taglist插件有两个:taglist.vim和taglist.txt,

将taglist.vim置于/usr/share/vim/vim72/plugin/taglist.vim下,

将taglist.txt置于/usr/share/vim/vim72/doc/taglist.vim下。

这样taglist就安装OK了。

taglist窗口快捷键:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27

<CR> 跳到光标下tag所定义的位置,用鼠标双击此tag功能也一样

o 在一个新打开的窗口中显示光标下tag

<Space> 显示光标下tag的原型定义

u 更新taglist窗口中的tag

s 更改排序方式,在按名字排序和按出现顺序排序间切换

x taglist窗口放大和缩小,方便查看较长的tag

+ 打开一个折叠,同zo

- 将tag折叠起来,同zc

* 打开所有的折叠,同zR

= 将所有tag折叠起来,同zM

[[ 跳到前一个文件

]] 跳到后一个文件

q 关闭taglist窗口

<F1> 显示帮助

最后在vim配置文件vimrc中添加:

1

map<F8>:Tlist<CR>

到此,该工具链就安装完毕了,下面是简单的使用。

在源码目录下输入vim,然后在命令模式下:

使用cscope

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15

cs finds----查找C语言符号,即查找函数名、宏、枚举值等出现的地方

cs findg----查找函数、宏、枚举等定义的位置,类似ctags所提供的功能

cs findd----查找本函数调用的函数

cs findc----查找调用本函数的函数

cs findt----查找指定的字符串

cs finde----查找egrep模式,相当于egrep功能,但查找速度快多了

cs findf----查找并打开文件,类似vim的find功能

cs findi----查找包含本文件的文件

在后面跟需要查找的就OK了,这套工具开始用着可能会有点不习惯,但是,一段时间后,会让你感到非常爽的。

如果有什么问题,欢迎大家一起讨论!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: