cscope 使用

下面文本摘自 cscope 的手册页:
Cscope 是一个交互式的屏幕下使用的工具,用来帮助你:
无须在厚厚的程序清单中翻来翻去就可以认识一个 C 程序的工作原理。
无须熟悉整个程序就可以知道清楚程序 bug 所要修改的代码位置。
检查提议的改动 (如添加一个枚举值) 可能会产生的效果。
验证所有的源文件都已经作了需要的修改;例如给某一个现存的函数添加
一个参数。
在所有相关的源文件中对一个全局变量改名。
在所有相关的位置将一个常数改为一个预处理符号。
它被设计用来回答以下的问题:
什么地方用到了这个符号?
这是在什么地方定义的?
这个变量在哪里被赋值?
这个全局符号的定义在哪里?
这个函数在源文件中的那个地方?
那些函数调用了这个函数?
这个函数调用了那些函数?
信息 "out of space" 从哪来?
这个源文件在整个目录结构中处于什么位置?
哪些文件包含这个头文件?
Cscope 在第一次被使用在指定的源文件时会建立一个符号的数据库。接下来被调
用时,cscope 仅仅重建那些被改动或者新文件相关的数据库。那些没有被改动的
文件相关的数据库会被直接复制使用。这是的重建数据库要比第一次运行快许多。
当 cscope 被一般的调用时,你会得到一个全屏幕的选择窗口。你可以输入以上
问题中的一个。然而,一旦找到一个匹配你必须进入一个文本编辑器来查看和编辑
匹配的文本。你无法象在 vi 中使用 Ctrl-] 或 :tag 命令那样方便的跳转。
Vim 的 cscope 接口的工作原理是:先调用 cscope 的命令行接口,然后分析其
输出结果从而找到匹配处。最终结果是:cscope 查询结果就象一般的标签一样。
你可以使用一般的标签命令 (Ctrl-] 或 :tag) 然后再用 Ctrl-T 回跳。
(注意 不过,其实你不能简单的就使用 Ctrl-] 或 :tag 来跳转到标签。在那之前
你必须重新定义映射或设定一些选项值。下面的几节会告诉你如何正确的使用
cscope 接口)

2. 在目录下建立cscope索引文件

为了方便使用,编写了下面的脚本来更新 cscope和ctags的索引文件:

#!/bin/sh

find . -name "*.h" -o -name "*.c" -o -name "*.cc" > cscope.files

cscope -bkq -i cscope.files

ctags -R

这个命令会生成三个文件:cscope.out, cscope.in.out, cscope.po.out。

其中cscope.out是基本的符号索引,后两个文件是使用"-q"选项生成的,可以加快cscope的索引速度。

这个脚本,首先使用find命令,查找当前目录及子目录中所有后缀名为".h", ".c"和".c"的文件,并把查找结果重定向到文件cscope.files中。

然后cscope根据cscope.files中的所有文件,生成符号索引文件。

最后一条命令使用ctags命令,生成一个tags文件,在vim中执行":help tags"命令查询它的用法。它可以和cscope一起使用。

上面所用到的命令参数,含义如下:

-R: 在生成索引文件时,搜索子目录树中的代码

-b: 只生成索引文件,不进入 cscope的界面

-q: 生成cscope.in.out 和cscope.po.out文件,加快cscope的索引速度

-k: 在生成索引文件时,不搜索 /usr/include目录

-i: 如果保存文件列表的文件名不是 cscope.files时,需要加此选项告诉cscope到哪儿去找源文件列表。可以使用“-”,表示由标准输入获得文件列表。

-I dir: 在-I选项指出的目录中查找头文件

-u: 扫描所有文件,重新生成交叉索引文件

-C: 在搜索时忽略大小写

-P path: 在以相对路径表示的文件前加上的path,这样,你不用切换到你数据库文件所在的目录也可以使用它了。

3在vim里读代码

在 VIM中使用cscope非常简单,首先调用“cscope add”命令添加一个cscope数据库,然后就可以调用“cscope find”命令进行查找了。VIM支持8种 cscope的查询功能,如下:例如,我们想在代码中查找调用work()函数的函数,我们可以输入:“:cs find c work”,回车后发现没有找到匹配的功能,可能并没有函数调用work()。我们再输入“:cs find s work”,查找这个符号出现的位置,现在vim列出了这个符号出现的所有位置。我们还可以进行字符串查找,它会双引号或单引号括起来的内容中查找。还可以输入一个正则表达式,这类似于egrep程序的功能。

s: 查找C语言符号,即查找函数名、宏、枚举值等出现的地方

g: 查找函数、宏、枚举等定义的位置,类似ctags所提供的功能

d: 查找本函数调用的函数

c: 查找调用本函数的函数

t: 查找指定的字符串

e: 查找 egrep模式,相当于egrep功能,但查找速度快多了

f: 查找并打开文件,类似vim的find功能

i: 查找包含本文件的文
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
毕业设计,基于SpringBoot+Vue+MySQL开发的影城管理系统,源码+数据库+论文答辩+毕业论文+视频演示 随着现在网络的快速发展,网上管理系统也逐渐快速发展起来,网上管理模式很快融入到了许多生活之中,随之就产生了“小徐影城管理系统”,这样就让小徐影城管理系统更加方便简单。 对于本小徐影城管理系统的设计来说,系统开发主要是采用java语言技术,在整个系统的设计中应用MySQL数据库来完成数据存储,具体根据小徐影城管理系统的现状来进行开发的,具体根据现实的需求来实现小徐影城管理系统网络化的管理,各类信息有序地进行存储,进入小徐影城管理系统页面之后,方可开始操作主控界面,主要功能包括管理员:首页、个人中心、用户管理、电影类型管理、放映厅管理、电影信息管理、购票统计管理、系统管理、订单管理,用户前台;首页、电影信息、电影资讯、个人中心、后台管理、在线客服等功能。 本论文主要讲述了小徐影城管理系统开发背景,该系统它主要是对需求分析和功能需求做了介绍,并且对系统做了详细的测试和总结。具体从业务流程、数据库设计和系统结构等多方面的问题。望能利用先进的计算机技术和网络技术来改变目前的小徐影城管理系统状况,提高管理效率。 关键词:小徐影城管理系统;Spring Boot框架,MySQL数据库
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值