Linux 命令速查
开发工具 man cscope

cscope

源代码交叉引用与符号浏览工具

返回

补充说明

cscope 面向 C/C++ 源码,建立符号数据库后可以交互式查找:谁调用了该函数、函数定义在哪、哪些文件包含某个字符串、变量的所有引用等。Vim 可通过 :cscope 集成它,适合阅读大型 C 项目。

使用前需在源码根目录生成 cscope.out 索引:cscope -Rbq。-R 递归子目录,-b 只建库不进入界面,-q 生成倒排索引加速查询。之后运行 cscope -d 使用已有数据库。默认生成 cscope.out,可用 -f 指定文件名。

注意大项目建库耗时且索引文件较大;增删源文件后需重新生成。它只解析 C 家族语言,其他语言应改用 ctags、GNU Global 等工具。Debian 需安装 cscope 包,RHEL 通常在 EPEL 中提供。

交互界面中用方向键或数字选择查询类型,输入符号后列出匹配位置,再选择编号跳转。也可以让 Vim 直接调用 cscope,避免反复切换终端。

语法

cscope [-bqR] [-f 数据库] [-s 目录] [源文件 ...]

选项

  • -b:只构建交叉引用数据库,不启动界面;
  • -q:生成倒排索引,加快查询;
  • -R:递归搜索子目录;
  • -f 文件:指定数据库文件名(默认 cscope.out);
  • -d:不重建数据库,直接使用已有数据库;
  • -s 目录:在指定目录中查找源文件;
  • -I 目录:添加头文件搜索目录;
  • -u:无条件重建所有索引;
  • -k:建库时不搜索 /usr/include。

实例

# 为当前项目递归建立索引(含倒排索引)
cscope -Rbq

# 使用已有数据库进入交互界面
cscope -d

# 指定数据库文件并只索引 src 目录
cscope -b -f my.out -s src

# 在 Vim 中:先 :cs add cscope.out,再 :cs find g main

参考链接