emacs -> source insight

来源:互联网 发布:c 拷贝数组 编辑:程序博客网 时间:2024/06/01 08:32
emacs => source insight

方法:emacs+cscope/gtags+cede+ecb+[doxymacs]+[session]+gdb
说明:
Emacs:GNU Emacs
gtags:GNU GLOBAL source code tag system
cedet:Collection of Emacs Development Environment Tools
ecb:Emacs Code Browser
doxymacs:Doxygen + Emacs
Doxygen:Source code documentation generator tool
session:Session Management for Emacs
GDB:GNU Project debugger
==================================
一. cscopes配置与使用,具体参见:
http://www.cnblogs.com/jtf-china/articles/2077922.html

1.首先,在系统中安装Cscope。Linux下,安装软件的方式通常有两种:

方式一:下载Cscope的源代码,按照源码包中的INSTALL说明文件,执行下面的命令进行配置编译安装

./configure

make

make install

Cscope的源码包里面有个xcscope.el文件,为(X)Emacs提供了Cscope 接口。它处于源码包的 contrib/xcscope 目录下。该目录下面还有一个名为cscope-indexer的脚本文件,用于创建文件列表和数据库。

方式二:利用linux发行版的软件管理工具进行安装。我使用的是Jaunty Jackalope(Ubuntu 9.04),只要一条命令,解决所有问题。

sudo apt-get install cscope

安装后,cscope-indexer脚本位于/usr/bin目录下,xcscope.el被置于emacs默认的load-path下,在我的系统中是/usr/share/emacs/site-lisp。

2.为了能够执行cscope-indexer脚本,需要将它放到PATH变量指向的文件夹下,如/usr/bin,并确认该脚本具有执行权限。

3.把xcscope.el文件放到系统用户的load-path下。为系统用户创建文件夹并将其加入load-path的方法是:先创建文件夹,

mkdir -p ~/.emacs.d/site-lisp/

然后,在emacs的配置文件~/.emacs中添加

;;LOAD_PATH       

(add-to-list 'load-path' "~/.emacs.d/site-lisp")

如果没有该文件,请手动创建。

4.在.emacs文件中加入下面的语句

(require 'xcscope)

或者,你希望只在打开c/c++文件的时候才加载xcscope,可以加入

(add-hook 'c-mode-common-hook '(lambda() (require 'xcscope)))

 

cscopes基本使用说明

这里以内核源码为例,介绍Cscope的基本用法。

1.首先,在源码根目录下,如~/kernerl/linux-2.6.29.3,利用cscope-indexer脚本生成文件列表和数据库,方法是执行

cscope-indexer -r

-r参数表示递归检索子目录,文件列表和数据库的默认文件名分别为cscope.files和cscope.out,可以使用-i,-f参数进行修改,请参考man了解脚本参数用法。

2.激动人心的时刻到了。用emacs打开init/main.c,C-s搜索sched_init函数,将光标停在函数名上,按C-c s d或者先前设置的Ctrl+F6,回车进行查找。结果居然用了35.32秒,汗!原来,Cscope默认在每次进行查找时更新cscope.out。当工程十分庞大时,建议关闭该选项以提高查找速度。方法是在~/.emacs文件中加入

(setq cscope-do-not-update-database t)

重复上述操作,结果仍然用了9.89秒,再汗!莫非是我的古董本太慢?

3.百度一下,你就知道:) Cscope可以通过创建反向索引加速查找,方法是调用Cscope时,使用-q参数。真的假的,一试便知。修改cscope-indexer脚本,将

cscope -b -i $LIST_FILE -f $DATABASE_FILE

替换为

cscope -q -b -i $LIST_FILE -f $DATABASE_FILE

进入内核根目录,删除先前的文件列表和数据库,重新调用cscope-indexer。这回多生成了两个文件,cscope.in.out和cscope.po.out。重试刚才的查找,结果只用了0.08秒,大功告成。

二、使用emacs + cscope + ecb替代source insight

http://linux.chinaunix.net/techdoc/develop/2007/11/29/973414.shtml
0 0
原创粉丝点击