源代码浏览,理解和阅读工具

时间:2012-08-14 09:59:28

标签: c call-graph

我主要是C和C ++程序员,我经常需要快速理解非常大的代码库(gcc,linux kernel)的结构。我想知道在这方面是否有任何工具可以提供帮助。我对调用图,整个项目的数据结构参考,包括依赖图,快速符号位置等特别感兴趣。我知道ctags和cscope,但我正在寻找具有更多可视化的东西,如调用图,可以快速定位定义函数的一个函数,在特定的调用中根图形,反转它(即定位对给定函数的所有调用)等。

3 个答案:

答案 0 :(得分:5)

如果你想建立一个呼叫图,你可以使用GCC -finstrument-functions推出自己的呼叫图。

基本上,当您编译启用了该选项的程序时,只要目标程序进入或退出函数,GCC就会调用以下函数:

      void __cyg_profile_func_enter (void *this_fn,
                                     void *call_site);
      void __cyg_profile_func_exit  (void *this_fn,
                                     void *call_site);

您需要做的是定义这些函数,并在逻辑中写入以生成调用图。

This extremely thorough tutorial说明了如何使用-finstrument-functionsGraphViz生成调用图。涉及的所有工具都是FOSS和免费提供。

当然:

  1. GraphViz生成的图表是独立的,不是IDE的一部分。
  2. 我不确定是否可以通过这种方式生成Linux(内核)的调用图。

答案 1 :(得分:0)

请尝试使用SourceInsight。浏览代码并理解它非常有用。它提供了您要求的大部分功能。

答案 2 :(得分:0)

您可以尝试使用cflow。它为您提供了内部函数调用的格式。但它不是很灵活。