`
lemoncyb
  • 浏览: 51010 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

[转]Vim+cscope+ctags+tags阅读源代码

 
阅读更多
[size=small]linux源代码提供了制作cscope索引文件和tags文件的make命令。
一,软件安装
先安装cscope:

sudo apt-get install cscope

在安装ctags:
http://ctags.sourceforge.net/

可以使用:ctags –version来查看当前ctags的版本是否是emacs的。
要是安装了emacs的话就必须使用上面这个地址的ctags,vim不支持emacs的ctags,所以要下载安装这个ctags,下载之后在源文件所在目录运行:

helight@helight-desktop:~/Desktop/ctags-5.7$  ./configure
helight@helight-desktop:~/Desktop/ctags-5.7$ make

即可生成ctags文件,将这个文件保存到“/usr/bin/”目录下即可。
二,生成索引文件
在源代码目录下使用一下两条命令即可生成cscope索引文件和tags文件。

helight@helight-desktop:~/Downloads/linux-2.6.26$ make cscope
FILELST cscope.files
MAKE    cscope.out
helight@helight-desktop:~/Downloads/linux-2.6.26$ make tags
MAKE   tags
helight@helight-desktop:~/Downloads/linux-2.6.26$ ls tags -l
-rw-r–r– 1 helight ftp 69274841 2008-09-27 11:04 tags
helight@helight-desktop:~/Downloads/linux-2.6.26$ ls cscope.* -l
-rw-r–r– 1 helight ftp  23814144 2008-09-25 20:08 cscope.in.out
-rw-r–r– 1 helight ftp    609665 2008-09-25 20:06 cscope.list
-rw-r–r– 1 helight ftp 174470617 2008-09-25 20:08 cscope.out
-rw-r–r— 1 helight ftp 124973256 2008-09-25 20:08 cscope.po.out


三,一般源文件中生成索引文件
为了方便使用,编写了下面的脚本来更新cscope和ctags的索引文件:

#!/bin/sh
find . -name "*.h" -o -name "*.c" -o -name "*.cc" > cscope.files
cscope -bkq -i cscope.files
ctags -R


这个命令会生成三个文件:cscope.out, cscope.in.out, cscope.po.out。
其中cscope.out是基本的符号索引,后两个文件是使用"-q"选项生成的,可以加快cscope的索引速度。
这个脚本,首先使用find命令,查找当前目录及子目录中所有后缀名为".h", ".c"和".c"的文件,并把查找结果重定向到文件cscope.files中。然后cscope根据cscope.files中的所有文件,生成符号索引文件。最后一条命令使用ctags命令,生成一个tags文件,在vim中执行":help tags"命令查询它的用法。它可以和cscope一起使用。上面所用到的命令参数,含义如下:
-R: 在生成索引文件时,搜索子目录树中的代码
-b: 只生成索引文件,不进入cscope的界面
-q: 生成cscope.in.out和cscope.po.out文件,加快cscope的索引速度
-k: 在生成索引文件时,不搜索/usr/include目录
-i: 如果保存文件列表的文件名不是cscope.files时,需要加此选项告诉cscope到哪儿去找源文件列表。可以使用“-”,表示由标准输入获得文件列表。
-I dir: 在-I选项指出的目录中查找头文件
-u: 扫描所有文件,重新生成交叉索引文件
-C: 在搜索时忽略大小写
-P path: 在以相对路径表示的文件前加上的path,这样,你不用切换到你数据库文件所在的目录也可以使用它了。
四,在VIM使用cscope查找
1,加载cscope.out文件
在VIM中使用cscope非常简单,首先调用“cscope add”命令添加一个cscope数据库,然后就可以调用“cscope find”命令进行查找了。VIM支持8种cscope的查询功能,如下:例如,我们想在代码中查找调用work()函数的函数,我们可以输入:“:cs find c work”,回车后发现没有找到匹配的功能,可能并没有函数调用work()。我们再输入“:cs find s work”,查找这个符号出现的位置,现在vim列出了这个符号出现的所有位置。我们还可以进行字符串查找,它会双引号或单引号括起来的内容中查找。还可以输入一个正则表达式,这类似于egrep程序的功能。
在源代码目录下打开vim。要使用cscope查找就必须加载cscope.out文件.在vim命令行下执行:

:cs add cscope.out

在vim命令行下执行:

:cs help
cscope commands:
add  : Add a new database             (Usage: add file|dir [pre-path] [flags])
find : Query for a pattern            (Usage: find c|d|e|f|g|i|s|t name)
       c: Find functions calling this function
       d: Find functions called by this function
       e: Find this egrep pattern
       f: Find this file
       g: Find this definition
       i: Find files #including this file
       s: Find this C symbol
       t: Find assignments to
help : Show this message              (Usage: help)
kill : Kill a connection              (Usage: kill #)
reset: Reinit all connections         (Usage: reset)
show : Show connections               (Usage: show)


s: 查找C语言符号,即查找函数名、宏、枚举值等出现的地方
g: 查找函数、宏、枚举等定义的位置,类似ctags所提供的功能
d: 查找本函数调用的函数
c: 查找调用本函数的函数
t: 查找指定的字符串
e: 查找egrep模式,相当于egrep功能,但查找速度快多了
f: 查找并打开文件,类似vim的find功能
i: 查找包含本文件的文

2,使用cscope查找do_fork函数的定义:
在vim命令行下执行:

:cs f g do_fork

五,在VIM中使用tags查找符号:
在vim命令行下执行:

:tag xxx

即可找到你想找的函数或是数据结构或是函数xxx
关于tags的其它用法可以在vim中执行”:help tags”命令进行查询。
六,其它命令介绍:
ctrl+]:在函数调用的地方跳转到函数定义的地方
ctrl+t:返回上一个查找的地方
七,特别注意:
所生成的cscope.out和tags文件要在打开VIM所在的文件夹,否则VIM无法找到相关符号信息。
[/size]
分享到:
评论

相关推荐

    用vim+ctags+taglist+cscope打造文本模式下的Kscope

    Vim+ctags+taglist+cscope 打造文本模式下的 Kscope Kscope 作为一个功能强大的文本模式下的代码浏览器,具有代码 navigation、代码搜索、代码分析等功能。但是,使用 Kscope 需要图形化界面,然而,在 Linux 系统...

    linux源代码阅读工具vim+ctag+cscope

    Vim、ctags和cscope是Linux开发人员常用的代码阅读工具,它们能够帮助开发者更高效地理解和导航源代码。以下是对这些工具的详细介绍: 1. **Vim**:Vim是一款高度可配置的文本编辑器,它具有强大的文本操作能力和...

    ctags,cscope,taglist.vim,cscope_maps.vim

    2. **cscope**:Cscope是一个强大的源代码浏览工具,相比于ctags,它的功能更为全面。除了基本的跳转功能外,cscope还支持搜索全局定义、引用、跨文件定义、函数调用、反向查找等功能。cscope-15.7.zip是cscope的一...

    vim+ctags使用

    Vim 是一个功能强大且灵活的文本编辑器,而 ctags 是一个源代码阅读工具,两者结合使用可以大大提高代码编写的效率。以下是 vim+ctags 的使用方法和应用。 ctags 应用 ctags 是一个源代码阅读工具,可以生成源...

    vim+ctags+cscope一键安装(使用)

    Vim是一款强大的文本编辑器,深受程序员喜爱,而Ctags和Cscope是两个与Vim协同工作的神器,能极大提高代码浏览和导航的效率。本文将详细介绍如何一键安装Vim、Ctags和Cscope,并解释它们的功能以及如何在日常开发中...

    cscope+tags+lookupfile+vim

    `cscope`是一个源代码浏览器,适用于多种编程语言,如C、C++、Java等。它提供了一个快速的交互式接口来查找函数定义、调用、全局变量、常量、字符串和包含文件。在`vim`中集成`cscope`,可以极大地提升代码导航能力...

    ctags & cscope win资源包

    `ctags`和`cscope`是两款强大的源代码浏览和导航工具,尤其在大型项目或复杂代码库中,它们能够帮助开发者快速定位和理解代码结构。`ctags`主要关注符号索引,而`cscope`则提供更全面的代码查询功能。 **ctags详解*...

    vim强大的配置

    **Cscope** 是一个源代码浏览工具,支持多种编程语言。在Vim中集成cscope,可以让你快速地执行以下操作: 1. 查找函数定义:当你不知道函数在哪定义时,cscope能帮你找到。 2. 查找调用某函数的地方:快速查看某个...

    vim config

    cscope是一款强大的源代码浏览工具,它可以用于查找函数定义、引用、全局变量、定义等。安装cscope后,在项目根目录下运行`cscope -bq`生成数据库,然后在Vim中通过`:cs add`命令添加这个数据库。这样,你就可以使用...

    源代码阅读工具

    解压后,按照指示安装和配置,即可在Vim中享受到高效的源代码阅读体验。 总的来说,Vim、ctags、cscope和Taglist的组合为Linux开发人员提供了强大的代码阅读和导航工具。它们可以帮助你快速理解复杂的代码结构,...

    vim配置工具.zip

    1. **tags**:Vim的tags系统基于`ctags`(Exuberant Ctags),它能够为源代码创建一个索引,使编辑器可以快速跳转到函数、类或变量的定义。通过在`.vimrc`中配置F7快捷键,可以方便地生成tags文件,使得在Vim中按`...

    经典vim插件设置

    1. **Cscope**:Cscope是一款源代码浏览工具,它支持多种编程语言,包括C、C++、Java等。在Vim中集成Cscope,可以让用户快速查找函数定义、变量引用、宏定义等,极大提高了代码阅读和理解的效率。 2. **WinManage**...

    我的vim 使用技巧

    - 访问 [ctags.sf.net](ctags.sf.net) 下载 ctags 的源代码。 - 配置并编译 ctags,确保其能够正确识别各种编程语言。 2. **ctags 的使用**: - 在每个项目的根目录下生成 `tags` 文件。 - 在 Vim 中设置 `tags` ...

    win配置好的gwin

    **Ctags** 是一个源代码索引工具,它可以为各种编程语言生成一个标签文件,这个文件包含了程序中各个函数、类、变量等定义的位置信息。在Vim中,通过`:tag`命令,我们可以快速跳转到标签所指向的代码行,极大地提高...

    vim使用积累

    3. **使用**:在源代码目录下运行 `ctags -R .` 来生成标签文件 `.tags`。 ##### 快捷键 - `]>`:跳转到光标所在函数的定义处。 - `<C-T>`:跳回调用处。 #### Taglist 使用 Taglist 是一个 Vim 插件,可以在 ...

    vim C/C++ 编辑器配置

    TagList 插件可以帮助开发者更高效地浏览源代码。 **安装 TagList 插件:** 1. **下载插件文件:** - 访问 TagList 的官方页面获取最新版本的插件文件,或将现有文件复制到 `~/.vim/plugin` 目录下。 2. **配置 ...

    linux下的抓包程序

    此外,本文还提到了与编程相关的ctags工具及其使用方法,并简要介绍了Cscope这一更强大的源代码浏览工具。最后,文章还简单提及了SQLite数据库的基础知识。 #### 抓包程序的工作原理 在Linux环境下,抓包程序主要...

    深入理解Linux内存映射机制

    例如,`ctags`可以生成源代码的索引文件,使得开发者可以通过简单的命令或快捷键在源代码之间跳转。 在实际操作中,可以按照以下步骤来生成这些工具所需的文件: 1. **安装必要的工具**:确保已经安装了`vim`、`...

Global site tag (gtag.js) - Google Analytics