首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >cscope:如何使用cscope使用命令行搜索符号?

cscope:如何使用cscope使用命令行搜索符号?
EN

Stack Overflow用户
提问于 2013-02-16 22:47:56
回答 2查看 13.3K关注 0票数 10

我在网上找到的所有cscope教程都讨论了如何使用cscope的交互模式在编辑器(如vim和emacs )中搜索符号。但我认为应该可以在终端发出命令来做以下事情

代码语言:javascript
复制
cscope -d -some_options <my symbol>

我应该能够在stdout中看到一个结果列表,而不是必须输入ncurse并在那里做所有事情。我认为这是可能的,因为“只有”前端cbrowser可以在其TclTK UI中执行类似的操作。但不幸的是,代码已经超出了我的能力。

但是,我没有找到有关此功能的文档。

我是在做梦还是有一种没有记录的方法来做这件事?

谢谢!

更新

一些进展:如果我做了一个小项目的几个文件与子dir结构。然后rici的答案就会从盒子里出来。使用更大的项目(具有复杂文件夹结构的数千个文件)。即使在项目文件夹的根目录(也是我当前的工作目录)有一个cscope.out和cscope.files,我也没有从相同的命令和符号中得到任何东西。我怀疑该命令存在可伸缩性问题。我也试过命令

代码语言:javascript
复制
cat cscope.files | xargs cscope -d -L1 <symbol> -i

都没有用。

更新

太奇怪了!我试着用其他符号。原来,我正在搜索的特定符号无法使用命令行显示。但我试过的其他符号都起作用了。cbrowser也不难找到“失败”的符号。不管怎样,我只是运气不好。我将就命令行中的异常提出一个单独的问题。

我把rici的回答标记为正确。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-11-30 22:17:17

您可以使用-R版本调用cscope进行递归搜索。例如:

代码语言:javascript
复制
cscope -d -f/path/to/cscope.out -R -L1 some_symbol

(搜索some_symbol的定义)

代码语言:javascript
复制
cscope -d -f/path/to/cscope.out -R -L3 some_symbol

(显示调用some_symbol的所有位置)

如果-f位于当前工作目录中,则可以省略cscope.out选项。

请注意,如果省略-R,上述调用将导致索引符号为零。非常老的cscope版本不支持-R。例如,15.8a版本确实支持它。

-L的可能值列表是:

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

在创建-R文件时也可以使用cscope.out选项,例如:

代码语言:javascript
复制
cscope -bR
票数 7
EN

Stack Overflow用户

发布于 2013-02-16 23:21:05

你可能在找这个:

代码语言:javascript
复制
cscope -L1<symbol>

您也可以使用-d,尽管如果要修改文件,cscope可以更新它的数据库。

-L的意思是“执行一个面向行的命令”,下面的数字(在本例中是1)也可以作为一个单独的选项编写,它是特定的命令,这个命令令人困惑地称之为“字段”。“字段”由交互式cscope提示符提供;为了方便起见,我添加了数字。"this“指的是数字后面的文本;请记住,这是一个模式,所以您不必键入完整的符号。

代码语言:javascript
复制
 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:
票数 22
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14915971

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档