博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
cscope的使用
阅读量:7069 次
发布时间:2019-06-28

本文共 2652 字,大约阅读时间需要 8 分钟。

首先自然是安装vim跟cscope了

如果项目比较简单, 那就直接cscope -R, 会在当前目录下生成一个数据库文件cscope.out
这个时候用vim编辑项目中的任意一个源文件, :cs show  可能会显示 “no cscope connection"
这是因为vim没有帮你自动加载数据库文件, 用:cs add cscope.out就可以了
这个时候命令:cs find s tagname就可以用了, 但用ctrl + ]的时候不会自动跳转, 这还是因为vim没有把你的cscope数据库文件当成tag文件, 需要用: set cst 或者:set cscopetag, 这样就会把cscope的数据库当成tag文件了
把下面代码放到.vimrc文件中, 以后系统就会自动帮你做了

 
""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" " cscope setting """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" if has("cscope")   set csprg=/usr/bin/cscope   set csto=1   set cst   set nocsverb   " add any database in current directory   if filereadable("cscope.out")       cs add cscope.out   endif   set csverb endif nmap 
s :cs find s
=expand("
")
nmap
g :cs find g
=expand("
")
nmap
c :cs find c
=expand("
")
nmap
t :cs find t
=expand("
")
nmap
e :cs find e
=expand("
")
nmap
f :cs find f
=expand("
")
nmap
i :cs find i ^
=expand("
")
$
nmap
d :cs find d
=expand("
")
set tag=tag; set autochdir

如果有大型的项目, cscope -R不但会消耗大量的时间, 而且还会干扰tags,所以一般会现生成一个列表

 
LNX=/home/jru/linux-2.4.18     cd /      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 >/home/jru/cscope/cscope.files

然后使用这个列表生成一个cscope.out的数据库文件,(上面加了绝对路径,使得数据库文件可以放在任意地方)

cd  /home/jru/cscope
  cscope -bkq -i cscope.files

这样就会生成一个数据库文件了
cscope的一些参数的意义如下

 
  • -R: 在生成索引文件时,搜索子目录树中的代码
  • -b: 只生成索引文件,不进入cscope的界面
  • -q: 生成cscope.in.out和cscope.po.out文件,加快cscope的索引速度
  • -k: 在生成索引文件时,不搜索/usr/include目录
  • -i: 如果保存文件列表的文件名不是cscope.files时,需要加此选项告诉cscope到哪儿去找源文件列表。可以使用”-“,表示由标准输入获得文件列表。
  • -Idir: 在-I选项指出的目录中查找头文件
  • -u: 扫描所有文件,重新生成交叉索引文件
  • -C: 在搜索时忽略大小写
  • -Ppath: 在以相对路径表示的文件前加上的path,这样,你不用切换到你数据库文件所在的目录也可以使用它了。

cscope的一些命令如下

 
  • s: 查找C语言符号,即查找函数名、宏、枚举值等出现的地方
  • g: 查找函数、宏、枚举等定义的位置,类似ctags所提供的功能
  • d: 查找本函数调用的函数
  • c: 查找调用本函数的函数
  • t: 查找指定的字符串
  • e: 查找egrep模式,相当于egrep功能,但查找速度快多了
  • f: 查找并打开文件,类似vim的find功能
  • i: 查找包含本文件的文件

可以在.vimrc设置一个自动更新的快捷键

 nmap <F5> :!find . -iname '*.c' -o -iname '*.cpp' -o -iname '*.h' -o -iname '*.hpp' > cscope.files<CR> 
                        \ :!cscope -b -i cscope.files -f cscope.out<CR> 
                        \ :cs reset<CR>

转载地址:http://mihll.baihongyu.com/

你可能感兴趣的文章
我的软考历程(二)网络规划师
查看>>
hive lock监控
查看>>
windows 2008无线网络“没有正确配置为使用IP协议” 错误解决办法
查看>>
php Imagick 实现等比缩放图片
查看>>
JAVA第一次作业
查看>>
Nginx 完整配置说明
查看>>
spark安装
查看>>
常用的shell命令汇总
查看>>
ORA-00283、ORA-01114
查看>>
在linux下安装eclipse以及运行c++程序的安装步骤
查看>>
kprobes调试驱动
查看>>
MySQL C#连接ySQL保存当前时间,时分秒都是0,只有日期
查看>>
Java GC 专家系列5:Java应用性能优化的原则
查看>>
访问网址(使用CDN)时 智能DNS调度 与 用户定位调度(根据IP定位)
查看>>
zencart新增categories分类表字段步骤
查看>>
《阿里技术参考图册》算法与研发篇
查看>>
第一次线程使用经验总结
查看>>
javascript将分,秒,毫秒转换为xx天xx小时xx秒(任何语言通用,最通俗易懂)
查看>>
springboot + shiro+登录 微信登录 次数验证资料
查看>>
价值观作业
查看>>