有网络的时候,使用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下面vim+ctags+cscope的使用方法,功能非常强大 linux下面vim+ctags+cscope的使用方法,功能非常强大
vim+ctags+cscope一键安装(使用)
自己的vim配置文件, 内含: 1. _vimrc 2. plugin: TagList, SuperTab, OmniCppComplete, Code_Complete 3. tags for glibc, C++(stl,stream), Unix98 system, glib-2.0 4. ftplugin for Pro*C/C++
vim配置文件,包含taglist cscope nerdtree 等配置
自己的vim配置文件 1. .vimrc 2. plugins: TagList, SuperTab, OmniCppComplete, Code_Complete DoxygenToolkit, proc 3. c89, GNU libc, C++(stl,stream), IEEE Std 1003.1-2008, glib-2.0 的tags文件 4. ftplugin ...
简单介绍了一下Kscope的用法,希望对大家有所帮助
自己的vim配置文件 1. .vimrc 2. plugins: TagList, SuperTab, OmniCppComplete, Code_Complete DoxygenToolkit, proc 3. glibc, C++(stl,stream), Unix98 system, glib-2.0 的tags文件 4. ftplugin for Pro*C/C++ 5...
详细解释了linux源代码阅读工具vim + ctag + cscope的配置和使用方法以及 vimre的配置 适合linux开发人员必须掌握的一把利器 不然在浩如烟海的linux代码中阅读linux内核简直大海捞针 痴人说梦
vim+ctags用法,可以很方便的查询你需要的数据类型,结构等信息。
代码阅读,vim插件使用,根据自己指定的目录生成ctags cscope等索引文件,shell脚本,仅供参考。
vim下的配置工具,方便开发者使用,大大提高了代码编写的效率,将你的vim编辑器配置成一个神器!
window下使用vim查看源码的好用插件,RAR里面有ctags,cscope,taglist.vim,cscope_maps.vim
linux下使用 vim + cscope 查看代码是我整理的linux下用VIM实现source insight
windows 环境的ctags和cscope还有DoxygenToolkit.vim minibufexpl.vim Tabular.vim taglist.vim visualmark.vim 插件工具
但是有时候又需要使用到windows下面的一些应用,所以开始折腾怎么在windows下使用vim+ctags+git,下面是我整理的记录。 windows使用vim,好多人推荐安装vim工具,但是我用了一下随着windows版本的升级,比如win8,...
vim插件 ctags58和cscope windows版可执行程序 附带cscope_maps.vim插件
vim+cscope配置