cscope:如何使用命令行搜索符号
cscope: How to use cscope to search for a symbol using command line?
我在网上找到的所有cscope教程都谈到了如何使用cscope的交互模式在vim和emacs等编辑器中搜索符号。但我认为应该有可能在终端发出命令来做一些类似的事情
cscope -d -some_options <my symbol>
我应该能够在stdout中看到结果列表,而不必输入ncurse UI并在那里做所有事情。我认为这是可能的,因为"唯一"的前端cbrowser可以在其TclTKUI中做这样的事情。但不幸的是,我无法理解代码。
但是,我没有发现任何有关此功能的文档。
我是在做梦,还是有一种没有记录的方式?
谢谢!
更新
一些进展:如果我做一个小项目的几个文件的子目录结构。然后rici的答案就不落俗套了。有一个更大的项目(数千个具有复杂文件夹结构的文件)。即使在项目文件夹(也是我当前的工作目录)的根目录中存在cscope.out和cscope.files,我也没有从相同的命令和符号中得到任何东西。我怀疑该命令存在可伸缩性问题。我也试过命令
cat cscope.files | xargs cscope -d -L1 <symbol> -i
但无济于事。
更新
非常奇怪!我试着用一些其他的符号。结果发现,我正在搜索的特定符号无法使用命令行显示。但我尝试过的所有其他符号都奏效了。cbrowser可以毫不费力地找到那个"失败"的符号。不管怎样,我只是运气不好。我会在命令行中单独问一个关于这个异常的问题。
我认为rici的回答是正确的。
您可能正在寻找以下内容:
cscope -L1<symbol>
您也可以使用-d
,尽管如果您正在修改文件,cscope可以更新它的数据库。
CCD_ 2表示";执行单行定向命令";,下面的数字(在这种情况下为1
)也可以作为单独的选项写入,是特定的命令,手册页混淆地称之为"命令";字段";。";字段";由交互式cscope提示给出;为了方便起见,我加了这个数字"这个";指数字后面的文本;记住,这是一个模式,所以你不必键入完整的符号。
0 Find this C symbol:
1 Find this function definition:
2 Find functions called by this function:
3 Find functions calling this function:
4 Find this text string:
5 Change this text string:
6 Find this egrep pattern:
7 Find this file:
8 Find files #including this file:
手册页参考
-d Do not update the cross-reference.
-L Do a single search with line-oriented output when used with the -num pattern option.
-l Line-oriented interface (see ``Line-Oriented Interface'' below).
https://linux.die.net/man/1/cscope
您可以使用-R
版本调用cscope进行递归搜索。例如:
cscope -d -f/path/to/cscope.out -R -L1 some_symbol
(搜索some_symbol的定义)
cscope -d -f/path/to/cscope.out -R -L3 some_symbol
(显示调用some_symbol的所有位置)
如果cscope.out位于当前工作目录中,则可以省略-f
选项。
注意,如果省略-R
,则上述调用对于索引符号产生零结果。非常旧的cscope版本不支持-R
。例如,15.8a版本确实支持它
-L
的可能值列表为:
0: Find this C symbol
1: Find this definition
2: Find functions called by this function
3: Find functions calling this function
4: Find this text string
6: Find this egrep pattern
7: Find this file
8: Find files #including this file
9: Find places where this symbol is assigned a value
创建cscope.out
文件时也可以使用-R
选项,例如:
cscope -bR
- 有根的二进制搜索树.保留与其父级的链接
- 在C++中,将大的无符号浮点数四舍五入为整数的最佳方法是什么
- 有符号的int和int-有没有一种方法可以在C++中区分它们
- 将无符号char*转换为std::istream*C++
- 如何在C++中将一个无符号的 int 转换为两个无符号的短裤?
- vscode g++链路故障:体系结构x86_64的未定义符号
- 在C++中搜索嵌套多映射值
- 从矢量<无符号字符>转换为字符* 包括垃圾数据
- 如何理解将半精度指针转换为无符号长指针和相关的内存对齐
- cpp二进制搜索问题,计算给定数组中输入元素的出现次数
- Visual studio代码重构似乎不起作用(例如,重命名符号-f2)
- 二进制搜索树叶数问题
- 使用gcc从静态链接的文件中查找可选符号
- 英特尔 MKL 和 JNI:如何添加 ld 从中搜索符号的共享库?
- 查找符号时,程序不会从正确的库中搜索
- 使用Robert Sedwick书中的符号表进行字符串搜索
- 模板类C++符号范围搜索顺序不同
- LNK2019:无法解析的外部符号,在不存在的*中搜索.obj文件
- 在无符号字符数组中搜索字符
- cscope:如何使用命令行搜索符号