源代码浏览、理解和阅读工具 我主要是C和C++程序员,我经常需要快速理解非常大的代码库(GCC,Linux内核)的结构。我想知道在这方面是否有任何工具可以提供帮助。我对整个项目的调用图、数据结构引用特别感兴趣,包括依赖关系图、快速符号定位等。我知道ctags和cscope,但我正在寻找更具可视化的东西,比如调用图,它允许快速定位函数定义,在特定调用时将图根化,反转它(即定位对给定函数的所有调用)等。

源代码浏览、理解和阅读工具 我主要是C和C++程序员,我经常需要快速理解非常大的代码库(GCC,Linux内核)的结构。我想知道在这方面是否有任何工具可以提供帮助。我对整个项目的调用图、数据结构引用特别感兴趣,包括依赖关系图、快速符号定位等。我知道ctags和cscope,但我正在寻找更具可视化的东西,比如调用图,它允许快速定位函数定义,在特定调用时将图根化,反转它(即定位对给定函数的所有调用)等。,c,call-graph,C,Call Graph,请尝试使用。这对于浏览代码和理解代码非常有帮助。它提供了您所要求的大部分功能。如果您想构建调用图,您可以使用GCC来实现自己的调用图 基本上,当编译启用该选项的程序时,只要目标程序进入或退出函数,GCC就会调用以下函数: void __cyg_profile_func_enter (void *this_fn, void *call_site); void __cyg_profile_func_ex

请尝试使用。这对于浏览代码和理解代码非常有帮助。它提供了您所要求的大部分功能。

如果您想构建调用图,您可以使用GCC来实现自己的调用图

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

      void __cyg_profile_func_enter (void *this_fn,
                                     void *call_site);
      void __cyg_profile_func_exit  (void *this_fn,
                                     void *call_site);
您需要做的是定义这些函数,并在逻辑中写入以生成调用图

说明如何使用
-finstrument函数
和生成调用图。所有涉及的工具都是自由和开放源码软件和免费的

当然:

  • GraphViz生成的图形是独立的,不是IDE的一部分
  • 我不确定是否可以用这种方式生成Linux(内核)的调用图

  • 你可以试试cflow。它为您提供了内部函数调用的概述。但是它不是很灵活。

    RTCM-请阅读编译器手册。大多数编译器都会做一些您想要的事情,我希望您使用的编译器也不例外。