`

使用vim+ctags+cscope阅读linux内核源码

阅读更多
有网络的时候,使用LXR(The Linux Cross Referencer)在线阅读源码固然是一件很爽的事情。在无网络的情况下,只通过vim进入内核源码那样查找就显得有些勉强。接下来,本文将介绍一种快速定位源码的工具:ctags和cscope。通过vim编辑器,再配合使用上述两种工具就可以快速定位想要查看的源码。好了,开始吧!

1.下载最新内核源码包,解压至主目录下

接下来的步骤当然可以在当前系统内核源码目录下进行,不过为了保险期间还是最好在主目录下专门创建一个存放源码的目录。下文所说的源码目录均指主目录下的源码目录。

2.安装ctags

使用命令:sudo apt-get install ctags

3.安装cscope

使用命令:sudo apt-get install cscope

4.成标签文件

在源码目录下通过命令make tags(也可使用:ctags -R)生成标签文件

5.生成索引文件

在源码目录下通过命令make cscope( 也可使用:cscope-indexer -r)生成索引文件。

6.将索引文件导入vim中

使用命令打开vim的配置文件:sudo gedit /etc/vim/vimrc;然后在该文件下添加如下代码:
if filereadable("cscope.out")
    cs add cscope.out
endif
这样每次打开vim就可以直接使用cscope了。

完成以上步骤以后就可以通过vim进行源码的快速定位了。上述安装的ctags和cscope都属于源码索引工具,因此仅安装两者之一也是可以的。不错,虽然ctags可以快速定位所输入的标签,但cscope的使用方法则更灵活。所以两者同时安装使用起来更方便。下面是一些简单的使用方法,仅供参考。

1.使用ctags

ctags的使用特别简单,首先进入源码目录下,打开vim编辑器,在命令模式下输入:tag tag_name 按回车即可。通常tag_name可以是结构体名称,函数名称,宏变量名称等。通常输入上述命令后,因为找到的标签并不唯一,所以还需要配合使用下述命令:

tfirst:跳至第一个

tnext:跳至下一个

tlast:跳至最后一个

2.使用cscope

虽然ctags使用方便快捷,但有时候使用cscope更灵活,首先可以看cscope的帮助文件:
引用

cscope 命令:
add  :添加一个新的数据库             (用法: add file|dir [pre-path] [flags])
find :查询一个模式                   (用法: find c|d|e|f|g|i|s|t name)
c:找到调用这个函数的函数
d:找到被这个函数调用的函数
e:找到这个 egrep 模式
f:找到此文件夹
g:找到这个定义
i:找文件 #包括这个文件
s:找到这个 C 符号
t:找到对其的赋值
help :显示此信息                     (用法: help)
kill :结束一个连接                   (用法: kill #)
reset:重置所有连接                   (用法: reset)
show :显示连接                       (用法: show)

通过上面的帮助文件可以发现如果想找到request_irq函数的定义处代码,即可使用这个命令:cs find g request_irq来进行查找。大多数情况下查找的结果并不唯一,因为需要在多个结果中通过头文件来继续查看。

通常是先通过cscope大致定位到头文件,再通过ctags在该头文件中详细定位。其实这两种工具并不局限于上述用法,更多用法可以再深入使用的过程中慢慢摸索,而且配合正则表达式等效果会更好。

引自:http://edsionte.com/techblog/archives/1689
分享到:
评论

相关推荐

    嵌入式Linux开发教程 下册

    常用的Linux源码阅读工具有SourceInsight、Eclipse、vim+ctags+cscope以及LXR等。SourceInsight是一个Windows平台上的源码阅读工具,可以方便地查看、修改和注释代码;Eclipse是一个通用的集成开发环境,通过插件...

    电子版(下册).-嵌入式Linux开发教程 周立功

    文档提到了SourceInsight、Eclipse、vim+ctags+cscope、LXR等工具,这些工具能够帮助开发者更好地理解Linux内核的源代码结构和流程。 2. Linux内核源码结构: - Linux内核源码具有清晰的目录树结构,方便开发人员...

    linux0.11版本内核源码对照分析

    为了遵守您的要求,我会在不使用这些片段的基础上,根据标题和描述所隐含的内容,直接讨论linux0.11版本内核源码的特点和分析学习方法,以达到符合要求的知识点介绍。 Linux 0.11是Linus Torvalds于1991年发布的...

    linux内核调试分析指南

    vim + cscope/ctags kscope lxr SI等与gdb的特点 调用链、调用树和调用图 理想调用链 函数指针调用 调用链的层次 非理想调用链 调用树与调用图 穿越盲区 穿越gdb的盲区 穿越交叉索引工具的盲区 工程方法 bug 与 OOPS...

    打造linux下的Source Insight

    以阅读Linux内核源码为例: 1. 进入Linux内核源码目录: ```bash cd /usr/src/linux-3.10.101 ``` 2. 生成Cscope数据库: ```bash cscope -Rbq ``` 3. 使用vim打开要查看的源文件,如`init/main.c`: ```...

    高效学习linux内核—新手必看—本人极力推荐

    Vim编辑器结合cscope和ctags,为Linux内核源码的浏览和导航提供了强大的支持。这些工具可以帮助我们快速定位代码、理解函数关系,极大地提高了源码阅读的效率。 再者,利用kernel地图来定位目标代码十分有用。内核...

    嵌入式Linux开发教程(下册)-周立功著

    接着,书中详细介绍了各种内核源码阅读工具,如SourceInsight、Eclipse、vim结合ctags和cscope以及LXR等。这些工具能够帮助开发者高效地浏览和理解Linux内核的源代码。SourceInsight是一个流行的源码查看工具,尤其...

    深入理解Linux内存映射机制

    - **Makefile**:可以通过预置的Makefile自动生成ctags、cscope等文件,方便地浏览内核源码。例如,可以使用`make SRCDIR=/path/to/kernel/source`命令来生成这些文件。 - **Ctags**:用于生成代码标签文件,帮助...

    打造C程序员专用vim

    **cscope_maps.vim**则是一款增强cscope功能的插件,它提供了一些快捷键来更方便地使用cscope。 **安装步骤:** 1. **安装cscope:** 类似于ExuberantCtags,大多数Linux发行版都默认安装了cscope。如果没有安装,...

    android kernel 开发培训.pdf

    - cscope和ctags的组合,可以提供更高级的代码索引和搜索功能,极大地提高代码阅读效率。 #### 四、搭建Windows下的代码阅读环境步骤 1. **建立SAMBA文件服务器** - 在Ubuntu下安装Samba服务器:`# apt-get ...

Global site tag (gtag.js) - Google Analytics