shell - 谁调用这个函数?

标签 shell ctags code-search-engine

在我的上一份工作(遗留 FORTRAN 77 代码)中,我们有交叉引用文件,其中列出了哪些子例程称为其他子例程、在哪些文件中定义了子例程、哪些公共(public) block 包含哪些变量、哪些子例程包含哪些公共(public) block 等。这些是然后由 grep 交叉引用文件的 shell 脚本使用,并会告诉您有关程序设计的信息。

我现在在一家新公司(C++ 代码),我找到了 ctags 来替换其中的一些功能。我最想念的一件事是我们称为“who.calls”的命令,它列出了哪些子例程(我的意思是函数或方法,必须习惯于 OO 语言)调用给定的子例程。例如,如果子程序 foo调用子程序bar :

>who.calls bar
foo

关于如何在不重新设计旧公司的编程环境的情况下做到这一点的任何建议?我正在寻找可以在命令行中使用的 super 正则表达式或其他方法,但我对其他方法持开放态度,这些方法采用完全不同的方法为我提供相同的信息。我基本上想在不运行调试器的情况下发现一个调试函数堆栈。

最佳答案

您可能要考虑使用 doxygen .它可以生成向您显示整个调用树和类结构的网页,以及提取格式正确的注释来记录类和方法,就像 Javadocs 为 java 所做的那样。

另一种可能性是开始使用 IDE。在使用 vi(然后是 gvim)和 ctags 25 年后,我最近加入了 21 世纪并开始使用 Eclipse(我正在做 Java,但我见过 Eclipse 的 C++ 插件)。除了能够做标签可以做的所有事情,它还可以把你带到当前方法的所有调用者。最重要的是,它内置了一个非常棒的交互式调试器。

关于shell - 谁调用这个函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/542710/

相关文章:

oracle - PL/SQL 代码导航工具

perl - ctags 对 moops 的支持

shell - 将变量发送到Docker容器中以在脚本中使用

bash - 如何将命令行参数添加到shell脚本中

linux - 如何让 shell 脚本可在终端中运行并可在/bin 中搜索?

VIM - 从项目中的多个位置采购标签

SVN 存储库搜索

search - VIM 快速 'Find in Files'?

bash - 将 vimrc 中的标题字符串设置为正在编辑的文件名