Chinaunix首页 | 论坛 | 博客
  • 博客访问: 206580
  • 博文数量: 50
  • 博客积分: 10
  • 博客等级: 民兵
  • 技术积分: 583
  • 用 户 组: 普通用户
  • 注册时间: 2012-08-12 14:38
文章分类

全部博文(50)

文章存档

2013年(50)

我的朋友

分类: LINUX

2013-03-29 23:53:36

   重新装了一下机子,以前配置好的工具现在又得重新装,好久没装过阅读内核源代码的工具了,忘的都差不多了,今天重新装,自己以前也总结过,今天贴出来和大家分享一下。

1. 首先介绍一下这些工具。
vim:linux下强大的编辑器。

ctags:生成tag文件的命令,这个是其他工具的基础。
taglist:需要ctags的支撑,直接在左边列出函数列表,全局参数列表。
cscope:比较强大,可以对函数以及部分类型定义进行跳转。其实cscope是来代替ctags的功能的。


2.安装工具。

(1)安装ctags和cscope比较简单,只要在终端下敲一下命令就ok了!

sudo apt-get install ctags
sudo apt-get install cscope

(2)taglist是vim的一个源代码浏览插件,不需要安装。只需要加入两个配置文件和在.vimrc中添加相应的配置即可。
可以到上下载taglist插件,也可以去官方网站去下载最新的插件。插件中有两个文件,
一个taglist.vim,另一个是taglist.txt。
1.3.1 将taglist.vim添加到/usr/share/vim/vim73/plugin/下。
1.3.2 将taglist.txt添加到/usr/share/vim/vim73/doc下。
1.3.3  在~/.vimrc配置文件的最后添加如下配置:
 map :TlistToggle

3.使用cscope:


(1)在你需要浏览源码的根目录下使用下面命令:$cscope -Rbkq其中:(注意:进入vim之后要先输入cs add cscope.out,才可以输入命令搜索,如果嫌麻烦的话可以直接将cs add cscope.out添加到vimrc下。以后就可以直接查找了。)

   R 表示把所有子目录里的文件也建立索引
   b 表示cscope不启动自带的用户界面,而仅仅建立符号数据库
   q 生成cscope.in.out和cscope.po.out文件,加快cscope的索引速度
   k 在生成索引文件时,不搜索/usr/include目录

(2)常用的命令:

  :cs find s ---- 查找C语言符号,即查找函数名、宏、枚举值等出现的地方
  :cs find g ---- 查找函数、宏、枚举等定义的位置,类似ctags所提供的功能  
  :cs find d ---- 查找本函数调用的函数:cs find c ---- 查找调用本函数的函数
  :cs find t: ---- 查找指定的字符串
  :cs find e ---- 查找egrep模式,相当于egrep功能,但查找速度快多了
  :cs find f ---- 查找并打开文件,类似vim的find功能
  :cs find i ---- 查找包含本文件的文件
Ctrl+]将跳到光标所在变量或函数的定义处 Ctrl+T返回

4.使用ctags:


 在你需要浏览源码的根目录下使用下面命令:$cscope -R,
其中"-R"表示递归创建,也就包括源代码根目录下的所有子目录下的源程序。然后使用vim打开一个C文件。使用F8来打开taglist的窗口,如果要想知道某个人函数或者结构体在什么地方,只要将光标移动到函数上,然后按住CTRL+]即可,看完后安CTRL+O又会回到原来的地方。在左边的tlist窗口和右边正常的编辑区切换用 ctrl+2w个,ctrl+t 返回跳转到标签的前一次位置(即上一个标签)。

5.使用taglist:
 在taglist窗口中,可以使用下面的快捷键:

           跳到光标下tag所定义的位置,用鼠标双击此tag功能也一样
 o             在一个新打开的窗口中显示光标下tag
        显示光标下tag的原型定义
 u             更新taglist窗口中的tag
 s             更改排序方式,在按名字排序和按出现顺序排序间切换
 x             taglist窗口放大和缩小,方便查看较长的tag
 +             打开一个折叠,同zo
 -             将tag折叠起来,同zc
 *             打开所有的折叠,同zR
 =             将所有tag折叠起来,同zM
 [[            跳到前一个文件
 ]]            跳到后一个文件
 q             关闭taglist窗口
           显示帮助

6.其他的工具:
 appcomplete:需要ctags的支撑,可以补全类型或者函数名。
global:和cscope,taglist功能差不多,对大型的工程用处比较大一些。



阅读(1280) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~