我的问题与以下问题有所不同:
Tools to reverse engineer C++ ( i.e. to view C++ classes )
我没有寻找类图,而是更感兴趣的是找到调用链和依赖项并生成漂亮的图形。
有这样的工具吗?我知道 cscope 和 ctags 可以做一些我想做的事情,但是采用非常低级的交互式方式(一次一个查询)。我想要更自动化的东西,例如,给定一个API,找到它的所有子例程调用路径,直到它到达叶子并向我显示。
有没有这方面的工具? 是否可以在二进制级别执行此操作?像库中的逆向工程函数依赖项(.a,。so,.dll作为输入)?
修改
我更喜欢静态分析工具而不是分析器,因为我希望它也适用于库和模块代码。
我也更喜欢跨平台解决方案。我主要在Mac上,但Linux或Windows的工具也很有趣。
更新
在研究了建议后,我决定Doxygen是我想要的。它提供了调用者和被调用者图,并使用静态分析,跨平台和免费。
感谢所有其他建议。他们睁开了我的眼睛。
答案 0 :(得分:3)
答案 1 :(得分:2)
Doxygen可以显示来电者和被叫者树:
doxygen
编辑1:
答案 2 :(得分:1)
您可以使用DEPENDS应用程序来检测Windows中的大多数C C ++和C#库 但仍然不会给你打电话链...... 这是链接DEPENDS
答案 3 :(得分:1)
在Windows上,您可以使用CodeTune
,它会为您提供显示功能依赖性的调用图
http://www.thewallsoft.com/codetune-documentation/
在GNU / Linux上,您可以使用gprof
然后使用此可视化工具创建调用图
答案 4 :(得分:1)
从评论中推广。
您是否尝试过使用callgrind工具使用valgrind?
Valgrind对调试非常有用,但valgrind中的callgrind工具对于分析和了解哪些函数调用其他函数非常有用。它附带了一个名为kcachegrind的可视化工具,它允许您在函数调用的其他块中查看块。
它完全免费。