在我的上一份工作(遗留 FORTRAN 77 代码)中,我们有交叉引用文件,其中列出了哪些子例程称为其他子例程、在哪些文件中定义了子例程、哪些公共块包含哪些变量、哪些子例程包含哪些公共块等。这些是然后由 grep 交叉引用文件的 shell 脚本使用,并会告诉您有关程序设计的信息。
我现在在一家新公司(C++ 代码),我找到了 ctags 来替换其中的一些功能。我最想念的一件事是我们称为“who.calls”的命令,它列出了哪些子例程(我的意思是函数或方法,必须习惯于 OO-speak)调用给定的子例程。例如,如果子程序foo
调用子程序bar
:
>who.calls bar
foo
关于如何在不重新设计旧公司的编程环境的情况下做到这一点的任何建议?我正在寻找可以在命令行中使用的超级正则表达式或其他方法,但我愿意接受其他方法,这些方法采用一些完全不同的方法来给我相同的信息。我基本上想在不运行调试器的情况下发现一个调试函数堆栈。