我想知道是否有软件可以帮助我们确定函数调用的所有可能来源。 例如:
/* in file f1.c */
int f1() {
x_func();
}
/* in file f2.c */
int f2() {
x_func();
}
如果我们想跟踪所有函数调用x_func()的来源,输出将为:
f1.c:f1()
f2.c:f2()
这在阅读源代码时非常有用。 所有答案都表示赞赏。提前感谢:D
答案 0 :(得分:2)
cscope可以提供帮助
答案 1 :(得分:1)
如果你想在运行时使用它,任何调试器都可以这样做:只需在x_func
内放置一个断点,并在它暂停时打印堆栈跟踪。
答案 2 :(得分:0)
Doxygen会为你做这件事(带照片!)。
此外,许多IDE还包含此类功能,例如,Visual Studio将生成文本调用图以及“查找所有引用”搜索。您可以使用免费的VC ++ Express Edition执行此操作,该项目不必是VC ++项目即可使用其代码导航功能,只需创建一个makefile项目并将头文件路径添加到预处理器设置。
答案 3 :(得分:0)
Tagfile程序,例如ctags和etags,可以做到这一点。它们是为编辑而编写的,而不是具体的人类可读性。 Emacs的M-。 key在标记文件中查找。