在读取大型C程序或库时,跨多个源文件和目录遍历嵌套函数的好方法是什么?
通常,在一个C源文件中声明的函数将简单地重定向到另一个C文件中声明的另一个函数,该文件实际上可能再次重定向.
目前,我只是为链中的下一个函数找到它的声明,但必须有一个更有效的方法.
注意:我明确没有询问如何在运行时或调试器中跟踪程序流.我只是要求阅读来源.
使用cscope
Cscope是开发人员浏览源代码的工具.它拥有无可挑剔的Unix血统,最初是在PDP-11时代贝尔实验室开发的.多年来,Cscope一直是官方AT&T Unix发行版的一部分,并且已被用于管理涉及2000万行代码的项目!
这是该工具的简短介绍:cscope教程
cscope可以为您做的一些事情是:
如果需要,您可以将它与vim或emacs编辑器一起使用.这进一步提高了生产力.一起使用时,您可以直接在代码中使用任何cscope功能.一个例子是跳转到函数的定义.它会比你需要的更多. 如何在Vim上使用Cscope
这很简单,只需要很少的命令.
首先创建cscope数据库.这需要一些时间,具体取决于源树中的文件数量.在随后的发布中,它将很快发布.
$cscope -R -b
现在,您可以直接从cscope的交互式窗口中搜索任何内容,方法是将其作为cscope -dvim编辑器本身进行搜索.
假设您在文件main.c中,并且您有另一个文件functions.c.在main中,您调用了一个函数func(),它是您要搜索的定义.在main.c中键入以下命令
:cs find g func
这将直接引导您在源树中的任何文件中定义函数.
如果您厌倦了键入,还可以配置键盘快捷键
我附加了vim cscope教程的链接,您可以在其中找到更多信息:
要做得更多,你可以使用ctags和其他两个.Vim + cscope + ctags非常强大.
请参阅手册页以了解更多信息