注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

未语愁眸

 
 
 

日志

 
 
 
 

cscope使用  

2011-01-06 15:21:02|  分类: linux系统 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

1. 创建环境

首先在目录下建立cscope索引文件

find -name '*.c' > cscope.file

cscope -Rbkq

这个命令会生成三个文件:cscope.out, cscope.in.out, cscope.po.out。
其中cscope.out是基本的符号索引,后两个文件是使用"-q"选项生成的,可以加快cscope的索引速度。
上面所用到的命令参数,含义如下:

  cscope使用 - 水含笑 - 未语愁眸-R: 在生成索引文件时,搜索子目录树中的代码
  cscope使用 - 水含笑 - 未语愁眸-b: 只生成索引文件,不进入cscope的界面
  cscope使用 - 水含笑 - 未语愁眸-k: 在生成索引文件时,不搜索
/usr/include目录
  cscope使用 - 水含笑 - 未语愁眸-q: 生成cscope
.in.out和cscope.po.out文件,加快cscope的索引速度

接下来,就可以在vim里读代码了。
不过在使用过程中,发现无法找到C++的类、函数定义、调用关系。仔细阅读了cscope的手册后发现,原来cscope在产生索引文件时,只搜索类型为C, lex和yacc的文件(后缀名为.c, .h, .l,.y),C++的文件根本没有生成索引。不过按照手册上的说明,cscope支持c++和Java语言的文件。
于是按照cscope手册上提供的方法,先产生一个文件列表,然后让cscope为这个列表中的每个文件都生成索引。
为了方便使用,编写了下面的脚本来更新cscope和ctags的索引文件:

  cscope使用 - 水含笑 - 未语愁眸#!/bin/sh
  cscope使用 - 水含笑 - 未语愁眸
  cscope使用 - 水含笑 - 未语愁眸find . -name "*.h" -o -name "*.c" -o -name "*.cc" > cscope.files
  cscope使用 - 水含笑 - 未语愁眸cscope -bkq -i cscope.files
  cscope使用 - 水含笑 - 未语愁眸ctags -R


这个脚本,首先使用find命令,查找当前目录及子目录中所有后缀名为".h", ".c"和".cc"的文件,并把查找结果重定向到文件cscope.files中。
然后cscope根据cscope.files中的所有文件,生成符号索引文件。
最后一条命令使用ctags命令,生成一个tags文件,在vim中执行":help tags"命令查询它的用法。它可以和cscope一起使用。

cs help

find 的选项

0或则S:查找本符号

1或则G:查找本定义

2或则D:查找本函数调用的函数

3或则C:查找调用本函数的函数

4或则T:查找本字符串

6或则E:查找本EGREP模式

7或则F:查找本文件

8或则I:查找包含本文件的文件

为了方便地使用cscope,我们还需要下载cscope的键盘映射设置,这样就可以在gvim中简单地通过快捷键来使用 cscope,而不必敲复杂的命令了。键盘映射可以从这里下载:http://cscope.sourceforge.net/cscope_maps.vim

将下载到的 cscope_maps.vim 放在gvim的插件目录里,如 C:\Program Files\Vim\vimfiles\plugin 中。Linux用户可以放在 $HOME/.vim/plugin 中。

运行cscope命令,出现两个面板,上方是一个查找结果的显示面板,下方是一个查找条件指定面板。使用TAB键在两个面板间切换。

应用实例

下面以使用cscope阅读内核源代码为例:

$ wget http://kernel.org/pub/linux/kernel/v2.6/linux-2.6.27.6.tar.bz2



#从Linux内核官网下载内核源代码



$ tar xvfj linux-2.6.27.6.tar.bz2



#解压文件



$ cd linux-2.6.27.6



#进入源代码根目录



$ ctags -R



#递归生成标签文件



$ cscope-indexer -r







#递归生成索引信息文件



$ cscope







#使用cscope阅读源码



http://docs.sun.com/app/docs/doc/820-1210/bjanq?l=zh&a=view
  评论这张
 
阅读(3748)| 评论(0)
推荐 转载

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2018