c - 如何有效地跟踪 C 中的嵌套函数调用?

标签 c

在读取大型 C 程序或库时,跨多个源文件和目录遍历嵌套函数的好方法是什么?

通常,在一个 C 源文件中声明的函数只会重定向到在另一个 C 文件中声明的另一个函数,该函数实际上可能会再次重定向。

目前,我只是 grep 链中的下一个函数来查找其声明,但必须有一种更有效的方法。

注意:我明确没有询问如何在运行时或调试器中跟踪程序流。我只是询问阅读源代码。

最佳答案

使用cscope

Cscope is a developer's tool for browsing source code. It has an impeccable Unix pedigree, having been originally developed at Bell Labs back in the days of the PDP-11. Cscope was part of the official AT&T Unix distribution for many years, and has been used to manage projects involving 20 million lines of code!

这是该工具的简短介绍:cscope tutorial

cscope 可以为您做的一些事情是:

  1. 查找函数定义
  2. 搜索 C 符号
  3. 查找调用任何函数的函数
  4. 查找egrep模式
  5. 在源代码中查找并替换字符串

如果需要,您可以将它与 vim 或 emacs 编辑器一起使用。这进一步提高了生产率。一起使用时,您可以直接从代码中使用任何 cscope 功能。一个例子是跳转到函数的定义。它会做的远远超过你所需要的。 如何将 Cscope 与 Vim 结合使用

它很简单,只需几个命令即可。

  1. 首先创建cscope数据库。这需要一些时间,具体取决于源树中的文件数量。在后续的发布中,它将快速启动。

    $cscope -R -b 现在,您可以通过以 cscope -d 启动 cscope 的交互式窗口来直接从它的交互式窗口中搜索任何内容,也可以从 vim 编辑器本身进行搜索。

  2. 假设您在文件 main.c 中,并且还有另一个文件functions.c。在 main 中,您正在调用一个函数 func() ,您要搜索其定义。在main.c中输入以下命令

    :cs 查找 g func 这将直接带您到源树中任意文件中的函数定义。

  3. 如果您厌倦了打字,还可以配置键盘快捷键

我附上了 vim cscope 教程的链接,您可以在其中找到更多相关信息:

cscope vim basics

cscope with vim tutorial

要执行更多操作,您可以使用 ctags和另外两个一起。 Vim + cscope + ctags 非常强大。

请参阅man page了解更多

关于c - 如何有效地跟踪 C 中的嵌套函数调用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33093434/

相关文章:

c - 产生了一个 bash shell。 shell 死了但 pipe 没坏?

setuid 包装器的注意事项

c - 当 pthread_join 被注释时会发生什么?

c - 未初始化指针的问题

c - 命名管道(fifo)程序不起作用

c - 链接列表的结构声明

c - 使用SIMD右移32位压缩负数

c - 在 malloc 的结构中初始化原子标志

C Fork 一个新的 tty

c - 用于连接多个字符串的 snprintf 无法按预期工作