linux初探

首页

应用服务器

Linux技巧

中文文档

Linux初级

服务器源代码

命令详解

Linux技术应用

Linux安全应用

Linux业界新闻

UniX技术文章

Linux编程与内核

Linux数据库

Linux服务器

Linux安装指导

Linux论坛


首页>>Linux编程与内核>>

热门文章

·C/C++中多维数组指针作为函数
·教你如何使用 C++Builder 制
·C++ Builder中保持控件的位置
·C++Builder中动态更改自定义
·拓展网页技术之C++在网页设计
·C++Builder创建基于Internet
·C++Builder在WIN2000环境下编
·用C++ Builder为计算机增加启
·C++/VC++ 语言编程的疑难问题
·C/C++语言void及void指针深层

推荐文章

说说在fedora上使用ctags和cscope看代码


我装的fedora6上的vim版本是7.0,带有ctags-5.6和 cscope-15.5的支持。我选择了工作机使用linux fedora6,系统自带的word和看pdf文件的软件都有,收发邮件的软件也有,挺方便的,好用,就是看代码的软件需要自己配一下,麻烦一点,不过配好了以后从速度和使用习惯上比sourceinsight好使。参考了网上一些人的经验,实践了一下,写这个文档总结也许对想了解了解ctags和cscope的人有帮助。

有很多程序员在linux上习惯使用vi编辑器,也有一些人喜欢使用emacs,不过我个人还是倾向于vi,其实用惯了vi就不喜欢用windows上的编辑器了,其实原因很简单:使用键盘完成查找和替换比用鼠标准确和快,而vi都使用键盘操作实现功能。目前vim是类似于vi的编辑器,它是开源项目而且功能更多,而ctags和 cscope就是它的插件,下面针对vim 来谈谈配置使用ctags 和cscope看代码。

1。需要下载安装

taglist是vim的插件,用来在屏幕左边开窗口显示代码的全局变量、函数名称

下载地址:http://www.vim.org/scripts/script.php?script_id=273

我下载的是taglist-43.zip

安装的方法是将这个包在/usr/share/vim/vim70下展开


2。对应需要看的代码生成cscope的数据库,这个过程也叫训练

我需要看的代码有三部分一部分是linux内核,另外两个部分是库和应用层代码。

Linux内核代码针对我需要的部分整理出数据库,而不相关的部分不参加整理

先建路径:

mkdir $HOME/readcode

mkdir $HOME/readcode/cscope-kernel

mkdir $HOME/readcode/cscope-app

进入路径:

cd readcode

建立生成cscope 数据库的文件文件名是create-kernel.sh

LNX=$HOME/build/linux-2.4.22

find $LNX \

-path "$LNX/arch/*" ! -path "$LNX/arch/arm*" -prune -o \

-path "$LNX/include/asm-*" ! -path "$LNX/include/asm-arm*" -prune -o \

-path "$LNX/tmp*" -prune -o \

-path "$LNX/Documentation*" -prune -o \

-path "$LNX/scripts*" -prune -o \

-name "*.[chxsS]" -print >$HOME/readcode/cscope-kernel/cscope.files

cd $HOME/readcode/cscope-kernel

cscope -b -q -k

cd $HOME/readcode

执行 source create-kernel.sh

会在目录$HOME/readcode/cscope-kernel下生成cscope.out文件

对应用层代码生成cscope的数据库要简单地多

它的生成脚本:

APP=$HOME/build/App

find $APP -name "*.cpp" -print >$HOME/readcode/cscope-app/cscope.files

find $APP -name "*.[ch]" -print >>$HOME/readcode/cscope-app/cscope.files

cd $HOME/readcode/cscope-app

cscope -b -q -k

cd $HOME/readcode

应用程序代码有一些是c++的,所以将.cpp格式的代码列出来生成cscope数据库


3。配置.vimrc文件

.vimrc内容如下:

set cst

set csto=1

set cscopequickfix=s-,c-,d-,i-,t-,e-,f-

cs add /home/yangxl/readcode/cscope-kernel/cscope.out

cs add /home/yangxl/readcode/cscope-app/cscope.out

let Tlist_Enable_Fold_Column = 0

let Tlist_WinWidth = 30

let Tlist_Show_One_File = 1

set tabstop=4

nmap :cs find d =expand("")

nmap :cs find c =expand("")

nmap :cs find t =expand("")

nmap :cs find e =expand("")

nmap :cs find f =expand("")

nmap :cs find i =expand("")

nnoremap :TlistToggle

最下面这几行定义了F2-F9功能的快捷键

F9是打开关闭左边taglist窗口的快捷键

具体它的语法解释在vi中通过键入

:help cscope

学习和理解


4。使用方法

用vi打开参加训练的代码,将光标停留在调用的方法上按ctrl-], 是不是出现了这个方法的原型代码,按F9键多出左边窗口,显示方法名列表和宏定义和全局变量,再按一次F9左边窗口消失。

显示加载的数据库

:cs show

能看到加载了两个cscope.out文件

:cs find 2 方法名 或 :cs find d 方法名 对应快捷键F2

完成找到被这个方法调用的方法名

:cs find 3 方法名 或 :cs find c 方法名 对应快捷键F3

完成找到调用这个方法的方法名

:cs find 4 字符串名称 或 :cs find t 字符串名称 对应快捷键F4

找到出现的字符串

:cs find 7 文件名 或 :cs find f 文件名 对应快捷键F7

找到文件

:cs find 8 文件名 或 :cs find i 文件名 对应快捷键F8

找到include这个文件的文件

:TlistToggle 对应快捷键F9


5。没有做到的

考虑代码在不断的编写过程中,怎样做才能同步cscope的库呢?

相关文章:

·Linux内核接收以太帧的处理程序
·(IPC)信号量的问题
·Linux下信号与进程控制解析
·Linux内核模块函数调用及命名空间
·通用的优化Linux的六大妙招
·编译内核过程中出现的问题
·揭示恶意的Linux内核模块是如何工作
·解读和分析Linux核心源码的两种方法
·Linux中GCC的应用介绍

Copyright@2005 www.linuxGoo.com All Right Reserved