红联Linux门户
Linux帮助

解决linux下代码查看问题

发布时间:2007-12-20 00:02:07来源:红联作者:lanterns
在windows下面我们有source in sight可以方便的浏览大工程中的代码,切换到linux环境下开发时,
我们也可以搭建一个这样的环境。下面的内容将介绍如何搭建这样一个开发环境(这里我们假设读者已经熟
悉emacs的安装和配置)。

步骤一 安装下列软件

1)cscope (version 15.6) :cscope是一个代码浏览工具,它可以帮你在一个大的工程中,
快速定位到一个函数/变量的声明位置,所有引用地方等,它可以结合vim和emacs一起使用。
单独使用cscope时不同文件间的跳转变得很难处理,这里我们介绍cscope在emacs环境中的
使用;

2)cedet-1.0pre4 :ecb需要依赖这个;

3)ecb-2.32 :这个是emacs的插件,可以在emacs中划分好几个不同的窗口,比如源代码窗口,
工程目录窗口,方法窗口等;

4)emacs-22.1.1
5)display-line-number.el 显示行

步骤二 修改或创建.emacs文件

;;加载我们需要的plugin

(load-file "path/cedet.el")
(load-file "path/ecb.el")
(load-file "path/xcscope.el")
(load-file "path/display-line-number")
(global-display-line-number-mode 1)
(setq display-line-number-format "%4d|")

;;下面是我常用的2个快捷键

(grobal-set-key "\M-g" 'goto-line)
(grobal-set-key "\M-m" 'set-mark-command)

步骤三 添加工程

假设我们要把/home/src/linux-2.6.23的源代码添加到工程中去,我们可以这样做,
1)cd /home/src/linux-2.6.23 进入源代码根目录;
2)touch cscope.sh创建一个脚本文件,内容如下

#!/bin/bash

LNX=/home/src/linux-2.6.23
find $LNX \
-path "$LNX/arch/*" ! -path "$LNX/arch/i386*" -prune -o \
-path "$LNX/include/asm-*" ! -path "$LNX/include/asm-i386*" -prune -o \
-path "$LNX/tmp*" -prune -o \
-path "$LNX/Documentation*" -prune -o \
-path "$LNX/scripts*" -prune -o \
-path "$LNX/drivers*" -prune -o \
-name "*.[chxsS]" -print > cscope.files

cscope -b -k

3)运行完cscope.sh脚本后,运行emacs,通过M-x ecb-activate激活ecb,然后通过
M-x ecb-add-source-path把$LNX加入工程中(注:我通常不喜欢gui界面,所有使用
命令emacs -nw激活emacs)。


步骤四 熟悉命令

1)常用的几个mode:
M-x ecb-activate '看式代码模
M-x hs-minor-mode '代码折叠
M-x display-line-number-mode-on '显示行号,需要display-line-number.el
M-x ediff/ediff-revision '比较模式
M-x compile
M-x gdb '调试模式
...
2)窗口切换命令
C-c . g d 进入工程浏览窗口
C-c . g s 进入源文件浏览窗口
C-c . g m 进入方法浏览窗口
C-c . g l 进入最近编辑的文件
C-c . e 进入eshell模式

3)代码浏览命令
C-c s s 所有引用
C-c s c 所有caller
C-c s g 声明,原型
...

4)列编辑:
M-m/M-w '设置mark
M-x string-insert-regtangle '插入文本,也可以C-x r t
C-x r k '删除文本,可以使用C-x r y再copy到另一个地方
C-x r c
C-x r d

5)版本比较
假如使用svn管理代码的话,可以进入emacs后,使用M-x ediff-revision进行版本比较。通常的比较
一般使用M-x ediff/ediff-directiories,非常方便。

补充:emacs或者vim的命令都非常的多,所以如果真的想要把这些工具用好,需要网上多看些相关的资料和
多练习
文章评论

共有 0 条评论