【发布时间】:2018-12-22 23:30:06
【问题描述】:
我的问题与以下问题虽然相似但不同:
Tools to reverse engineer C++ ( i.e. to view C++ classes )
我对查找调用链和依赖关系以及生成漂亮的图表更感兴趣,而不是寻找类图。
有这样的工具吗?我知道 cscope 和 ctags 可以做一些我想做的事情,但是以非常低级的交互方式(一次一个查询)。我想要一些更自动化的东西,例如,给定一个 API,找到它的所有子例程调用路径,直到它到达叶子并将它们显示给我。
是否已经有用于此的工具? 是否有可能在二进制级别上做到这一点?像库中的逆向工程函数依赖项(.a、.so、.dll 作为输入)?
编辑:
我更喜欢静态分析工具而不是分析器,因为我希望它也适用于库和模块代码。
我也更喜欢跨平台解决方案。我主要使用 Mac,但 Linux 或 Windows 的工具也会很有趣。
更新
在研究了这些建议后,我决定 Doxygen 是我想要的。它提供调用者和被调用者图表,并使用静态分析,跨平台,免费。
感谢所有其他建议。他们让我大开眼界。
【问题讨论】:
-
您是否尝试过将 valgrind 与 callgrind 工具一起使用?
-
谢谢。这似乎像 gprof 一样在探查器路线上。对调试程序更有用。
-
将我关于 valgrind 的 cmets 推广为答案,因为没有人提到他们
标签: c++ dependencies