首页 | 资讯动态 | linux基础 | 系统管理 | 网络管理 | 编程开发 | linux数据库 | 服务器技术 | linux相关 | linux认证 | 嵌入式 | 下载中心 | 专题 | linux招聘 | 镜像站
OKLinux中文技术站
·设为首页
·加入收藏
·联系我们
系统管理: 中文环境 系统管理 桌面应用 内核技术 | Linux基础: 基础入门 安装配置 常用命令 经验技巧 软件应用 | Linux数据库: Mysql Postgre Oracle DB2 Sybase other
网络管理: 网络安全 网络应用 Linux服务器 环境配置 黑客安全 | 编程开发: PHP CC++ Python Perl Shell 嵌入式开发 java jsp | PHP技术: PHP基础 PHP技巧 PHP应用 PHP文摘
Linux资讯 Linux招聘 Linux专题 Apache | Linux相关: 硬件相关 Linux解决方案 Linux认证 企业应用 其它Unix | 相关下载: 资料下载 参考手册 开发工具 服务器类 软路由 其它
 技术搜索:
会员中心 注册会员 高级搜索  
  → 当前位置:首页>系统管理>内核技术>正文

用VI阅读linux内核代码---VI的高级使用

http://www.oklinux.cn  2007-03-28  来源: oklinux收集整理  linux286      会员收藏  游客收藏  【 】 
其实内核原代码的Makefile就包含了make tags/TAGS的选项,
但是生成的tags太大,因为包含了drivers等不常用的目录。

因此参照内核的Makefile文件,写了一个Makefile,
用来生成ctags/cscope/etags。

这样,可以根据自己的需要,删除和添加目录。

我以前没有用过tags/cscope,不知道有没有更好的方法。欢迎指教。
也请大家补充tags/cscope的常用的和好用的命令,技巧。

一、用法

找一个空目录,把附件Makefile拷贝进去。
然后在该目录中选择性地运行如下make命令:

注:SRCDIR用来指定内核源代码目录,如果没有指定,
则缺省为/usr/src/linux/,如

$ make

将处理/usr/src/linux下的源文件,在当前目录生成ctags, cscope


1) 只创建ctags

$ make SRCDIR=/usr/src/linux-2.6.12/ tags

2) 只创建cscope

$ make SRCDIR=/usr/src/linux-2.6.12/ cscope

3) 创建ctags和cscope

$ make SRCDIR=/usr/src/linux-2.6.12/

4) 只创建etags

$ make SRCDIR=/usr/src/linux-2.6.12/ TAGS


二、处理时包括的内核源文件:

1) 不包括drivers,sound目录
2) 不包括无关的体系结构目录
3) fs目录只包括顶层目录和ext2,proc目录

对2.6.12.1内核,这样生成的tags大约12M,cscopes大约19M

三、最简单的ctags命令

----------------------
1) 进入

进入vim后,用

:tag func_name

跳到函数func_name

----------------------
2) 看函数(identifier)

想进入光标所在的函数,用

CTRL + ]

----------------------
3) 回退

回退用

CTRL + T

----------------------


我现在只会用这几个命令,请大家说说其他常用的命令。

查找标识符

:tag write_<TAB>

找到以write_开头的标识符,如果有多个,继续按<TAB>,直到找到想要的。


如果想跳到包含block的标识符

:tag /block

然后用<TAB>来选择。

这里'/'就是告诉vim'block'是一个pattern。

如果想在以write_开头的标识符中选择一下,

:tselect /^write_

这里,'^'表示开头,同理,'$'表示末尾。

多个同名的标识符

如果某个函数有多个定义,':tag'命令会跳到第一个,如果当前文件有,则优先用这个。
然后可以跳到下一个同名的
:tnext

跳到第一个
:tfirst

跳到前count个
:[count]tprevious

跳到后count个
:[count]tnext

跳到最后一个
:tlast


你也可以在所有tagname中选择:
:tselect tagname

*********************************************************************


我没有用wheelz的makefile,因为我需要看驱动代码,所以用了make tags命令。

下面是taglist的安装和简单用法,转载了http://www.linux.gov.cn/cn/docview?s=3&&id=2的部分内容,如下:

×××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××

安装说明:

1. 确保机器上有一个可用的Exuberant Ctags的版本(可以执行命令"ctags")

2. 在Vim网站上下载taglist(假设为taglist.zip);

3. 使用"unzip taglist.zip -d ~/.vim"解开;

4. 在Vim中运行":helptags ~/.vim/doc"安装文档。

虽然taglist使用ctags,但并不要求tags文件的存在。

功能说明:

使用命令":Tlist"启用/关闭taglist。

taglist的功能主要如下:

可以显示宏(macro)、函数(function)、变量(variable)、类型定义(typedef)、类(class)、结构(struct)等多种内容信息;
打开多个文件时,可以同时看到多个文件的结构信息;
在左边的taglist窗口显示的名称上双击鼠标或按回车键,右边主窗口中会跳转到相应的定义位置;
右边窗口中光标的位置改变,左边的窗口也会在4秒内(缺省值,参见":help 'updatetime'")黄色加亮显示相应的名称;
在启用/关闭taglist时,插件能够自动改变当前Vim窗口的大小(不管是文本模式的Vim还是图形界面的Vim),除非使用":let Tlist_Inc_Winwidth=0"关闭这一功能(当使用这一功能导致兼容性问题时)。
更多的帮助内容请参考":help taglist"。

上一篇:Linux磁盘管理命令   下一篇:Linux信号


收藏于收藏夹】 【评论】 【推荐】 【打印】 【关闭
相关文档
·Linux磁盘管理命令
·Linux信号
·Kernel升级笔记
·Linux中重新编译内核
·linux内核体系结构
·Linux对超线程技术支持
·Linux线程的定义
·Debian下编译安装Linux内核
·Linux内核主要五个子系统详解
·跟我一步一步学汉化(一)
·Linux内核源代码位于/usr/src/linux目录中概述
·linux驱动程序设计
·Linux密码的破解
·为你的 Linux 快速编译所需要的模块
·实战编译Linux内核
·Linux:让内存不再泄漏
发表评论
密码: 匿名评论
评论内容:

(不超过250字,需审核后才会公布,请自觉遵守互联网相关政策法规)
 
  最新文档
·Linux系统下内核定时器的用法
·学习园地:Linux系统内核中判断大小的
·系统编译:如何给Make命令来传递参数
·Linux 2.6内核中sysfs文件系统简单概述
·Fedora 8 Linux系统的内核配置注意事项
·升级Linux内核的一般步骤方法
·Linux发行版知识普及:三个版本的CPUID
·编译安装Virtualbox驱动模块
· Linux系统的内核解读入门
·新手学堂 Linux系统的内核解读入门
·Linux系统内核中网络参数的意义及其应
·走向Linux系统高手之路 内核编译过程解
  阅读排行
· 深入理解LINUX内核中文版下载地址
·基于S3C44B0微处理器的uClinux内核引导
·Kernel command using Linux system ca
·Linux 2.6内核如何武装Fedora Core 2
·Process priority and control on AIX
·Linux操作系统的内核编译内幕详解
·推荐:Linux用户态与内核态的交互
·通过振动向Linux ThinkPad传输信息
·Linux操作系统源代码详细分析(二)
·Linux系统内核接收以太帧的处理程序
·Linux and symmetric multiprocessing
·主流嵌入式Linux系统下GUI解决方案
·揭秘Linux内核调试器之内幕
·用命令行加挂Linux的文件系统简介
·Linux内核和核心OS组件的测试与分析
网摘收藏: