Table of Contents
1 前面的话
在Linux下,cscope算得上是非常不错的代码浏览工具了。尤其是结合Emacs/Vim,更能显示它的威力,我就是使用Emacs+cscope来浏览kernel代码的。当然,如果你能配合cedet或者etags或者ctags使用更好,但我不想那么麻烦^_。
2 安装Cscope
2.1 下载cscope
这是cscope的主页:
http://cscope.sourceforge.net/
这是cscope的下载地址:
http://sourceforge.net/projects/cscope/files/
2.2 编译安装
仍然是老三步:
./configure make sudo make install
Cscope 的发行包里面有个 xcscope.el 能很好地用于XEmacs 。它处于源代码包的 contrib/xcscope 目录下,请将xcospe放入.emacs.d/中。
2.3 配置
(require 'xcscope) ;; 设置仅在打开c/c++文件时打开 (add-hook 'c-mode-common-hook '(lambda() (require 'xcscope)))
2.4 使用
如果需要使用cscope,请将cscope-indexer放入该目录,使用chown命令将其设置为可执行。
chown 744 cscope-indexer
接着使用下面的命令就会生成索引文件:
cscope-indexer -r
它会生成cscope.files和cscope.out两个文件或目录。
2.5 加快索引速度
实际上,cscope自带的cscope-indexer是一个shell脚本,里面的核心内容分为两部分:一部分是搜索并记录当前目录以及子目录下所有.c/.h/.cpp等文件列表;另外一部分使用cscope命令生成索引文件。而对于linux-kernel这样的工程来说,如果不在索引方式上做优化,找个全局变量或者函数调用可能够你喝杯茶了。
所以,使用 -k 命令选项可以对kernel进行优化以及使用 -q命令选项进行反向索引,以加快搜索的速度。我将cscope-indexer脚本更改如下:
# 原来的设置 # cscope -b -i $LIST_FILE -f $DATABASE_FILE # 现在的设置 cscope -b -q -k -i $LIST_FILE -f $DATABASE_FILE
同时,当你对源文件进行更改的时候,cscope会重新生成索引文件,这样会使得查找很慢。你可以在~/.emacs下添加如下代码,是cscope默认不更新索引数据。
;; 打开cscope时不更新,提高索引速度 (setq cscope-do-not-update-database t)