有时我正在阅读一些代码,并想找到某个符号的定义,但是它散布在整个代码中,以至于grep或多或少不足以指示我其定义。

例如,我正在使用Zlib,我想弄清楚FAR的含义。

Steven@Steven-PC /c/Users/Steven/Desktop/zlib-1.2.5
$ grep "FAR" * -R | wc -l
260

要扫描的东西很多。事实证明,实际上#define d没什么,但是花了我一些时间才弄清楚。

如果我使用的是Eclipse,我会很容易,因为我可以将鼠标悬停在该符号上,它将告诉我它是什么。

我可以使用哪些工具来以这种方式分析代码? GCC可以帮我吗? clang也许?我最好在命令行中寻找东西。无论如何,这种工具都不是成熟的IDE。

最佳答案

您可能想 checkout cscope,它基本上是为此而准备的,以及一个命令行工具(如果愿意,可以使用ncurses)。另外,libclang(clang / llvm的一部分)可以做到这一点-但这只是一个库(但是我只花了大约100行python来使用libclang来模拟基本的cscope功能)。

cscope要求您首先构建数据库。 libclang可以解析“实时”代码。

10-05 20:01