我在网上找到的所有cscope教程都讨论了如何使用cscope的交互模式在编辑器(如vim和emacs )中搜索符号。但我认为应该可以在终端发出命令来做以下事情
cscope -d -some_options <my symbol>我应该能够在stdout中看到一个结果列表,而不是必须输入ncurse并在那里做所有事情。我认为这是可能的,因为“只有”前端cbrowser可以在其TclTK UI中执行类似的操作。但不幸的是,代码已经超出了我的能力。
但是,我没有找到有关此功能的文档。
我是在做梦还是有一种没有记录的方法来做这件事?
谢谢!
更新
一些进展:如果我做了一个小项目的几个文件与子dir结构。然后rici的答案就会从盒子里出来。使用更大的项目(具有复杂文件夹结构的数千个文件)。即使在项目文件夹的根目录(也是我当前的工作目录)有一个cscope.out和cscope.files,我也没有从相同的命令和符号中得到任何东西。我怀疑该命令存在可伸缩性问题。我也试过命令
cat cscope.files | xargs cscope -d -L1 <symbol> -i都没有用。
更新
太奇怪了!我试着用其他符号。原来,我正在搜索的特定符号无法使用命令行显示。但我试过的其他符号都起作用了。cbrowser也不难找到“失败”的符号。不管怎样,我只是运气不好。我将就命令行中的异常提出一个单独的问题。
我把rici的回答标记为正确。
发布于 2017-11-30 22:17:17
您可以使用-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的所有位置)
如果-f位于当前工作目录中,则可以省略cscope.out选项。
请注意,如果省略-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在创建-R文件时也可以使用cscope.out选项,例如:
cscope -bR发布于 2013-02-16 23:21:05
你可能在找这个:
cscope -L1<symbol>您也可以使用-d,尽管如果要修改文件,cscope可以更新它的数据库。
-L的意思是“执行一个面向行的命令”,下面的数字(在本例中是1)也可以作为一个单独的选项编写,它是特定的命令,这个命令令人困惑地称之为“字段”。“字段”由交互式cscope提示符提供;为了方便起见,我添加了数字。"this“指的是数字后面的文本;请记住,这是一个模式,所以您不必键入完整的符号。
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:https://stackoverflow.com/questions/14915971
复制相似问题