前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >日更系列:阅读c++代码使用工具vim+cscope

日更系列:阅读c++代码使用工具vim+cscope

原创
作者头像
mariolu
发布2022-04-05 17:05:13
1.5K0
发布2022-04-05 17:05:13
举报

阅读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

代码语言:javascript
复制
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阅读代码。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
数据库
云数据库为企业提供了完善的关系型数据库、非关系型数据库、分析型数据库和数据库生态工具。您可以通过产品选择和组合搭建,轻松实现高可靠、高可用性、高性能等数据库需求。云数据库服务也可大幅减少您的运维工作量,更专注于业务发展,让企业一站式享受数据上云及分布式架构的技术红利!
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档