C++: Dependency tracking tool (reverse engineering)

My question is different from though similar to the ones such as:

Tools to reverse engineer C++ ( ie to view C++ classes )

Instead of looking for class diagrams, I'm more interested in finding call chains and dependencies and generating nice-looking graphs.

Is there such a tool? I know cscope and ctags can do a little bit of what I'd like to do but in very much low-level interactive manners (one query at a time). I'd like something more automated, eg, given an API, find all its sub-routine call paths till it reaches the leaf and show them to me.

Is there a tool for this already? Is it possible to do it at the binary level? like reverse-engineering function dependencies in a library (.a, .so, .dll as input)?

EDIT:

I prefer static analysis tool over profilers since I would like it to work for library and module code as well.

Also I prefer cross-platform solutions. I'm mainly on a Mac but tools for Linux or Windows will be interesting as well.

UPDATE

After researching into the recommendations I decided that Doxygen is what I want. It gives caller and callee graphs, and uses static analysis, cross-platform, and free.

Thanks to all the other recommendations. They opened my eyes quite a bit.


Doxygen can display caller and callee trees:
Doxygen

Edit 1:
示例Doxygen调用树


CppDepend looks totally awesome for the task.

在这里输入图像描述

http://www.cppdepend.com/


you can use DEPENDS application which detects most of C C++ and C# libraries in windows.
but still wont give you call chains...
here's the link DEPENDS

链接地址: http://www.djcxy.com/p/37696.html

上一篇: 交互式替代点?

下一篇: C ++:依赖性跟踪工具(逆向工程)