阅读c++代码使用工具vim+cscope

| 2019-05-17

阅读c++代码中,我门在linux上直接vim打开,简单的搜索"/<symbl>"搜索关键词。这个搜索出来的类似有Find查找。但其实在c++代码中有个更高级的功能-符号解析器。这类似我们在IDE上使用的那些快捷查找指令“符号的定义”,“符号的声明”,“符号的调用者”。
 
首先我们需要先按照cscope工具,苹果OSX系统使用brew install cscope安装,ubuntu系统使用apt get install scope,centos系统使用yum install cscope。
 
接着我们进入到c++工程目录,执行cscope -b -c -R, 这时候cscope会去解析符号以及他们之前的联系,会生成一个cscope.out代码符号文件。这个小型数据库文件保存着符号表已经他们的关系。
 
-R:递归解析子目录。
-b:  构建交叉引用(cross-reference)文件之后,而不会进入命令的交互使用界面
-c:符号仅限于ascii字符
这时候我们在使用vim的时候,就可以加载这个符号数据库。通过命令:cs add ./cscope.out加载工程项目符号索引数据库。
 
然后可以通过以下使用用法: cs[cope] find a|c|d|e|f|g|i|s|t name
cscope 命令:
add  : 添加一个新的数据库             (Usage: add file|dir [pre-path] [flags])
find : 查询一个模式                   (Usage: find a|c|d|e|f|g|i|s|t name)
       a: Find assignments to this symbol
       c: Find functions calling this function
       d: Find functions called by this function
       e: Find this egrep pattern
       f: Find this file
       g: Find this definition
       i: Find files #including this file
       s: Find this C symbol
       t: Find this text string
help : 显示此信息                     (Usage: help)
kill : 结束一个连接                   (Usage: kill #)
reset: 重置所有连接                   (Usage: reset)
show : 显示连接                       (Usage: show)
比如常用的有(选项c)查找调用此函数的地方,(选项d)查找此函数调用的地方,(选项g)查找函数定义。
 
但是注意有几个事情cscope不能实现。
 
cscope生成的cscope.out数据库是包含当前目录的所有符号,他不能限定查找范围为某个子目录,这个像vscode之类的IDE是有这个功能。
另外像出现几个符号的选择,我们会进一步选择去第几个符号,但是跳转过去就不能跳回原菜单。这一点也没有IDE方便。
 
但是这不妨碍cscope,因为它轻便,无需桌面环境,且比文本搜索工具更能准确地查找符号,很适合在服务上使用vim阅读代码。

编辑:航网科技 来源:腾讯云 本文版权归原作者所有 转载请注明出处

在线客服

微信扫一扫咨询客服


全国免费服务热线
0755-36300002

返回顶部