输出源文件调用的函数列表

时间:2009-09-22 11:11:17

标签: c++ visual-studio

是否有我可以设置的标志,以便编译器(链接器?)将在编译期间输出每个单独源文件中(不仅仅定义)所调用的所有函数的列表(链接? )过程?

谢谢,

5 个答案:

答案 0 :(得分:3)

我不知道VS是否可以这样做,但你可以使用doxygen为每个功能生成一个调用图。

答案 1 :(得分:2)

您可以尝试CppDepends生成项目的依赖关系图以及其他一些有用的信息

答案 2 :(得分:1)

将其编译为目标文件,并获取其中未定义的外部符号列表。您可以使用适用于您平台的适当工具自动获取列表:在Linux中它是readelf

答案 3 :(得分:1)

对于单个功能,右键单击,然后选择Call-Browser-> Show Call Graph。

如果从main()执行此操作,则会获得main()线程的调用树。您必须在每个线程的入口点执行此操作才能获得多线程应用程序的完整视图。它当然可能无法处理通过指针调用的函数。

答案 4 :(得分:0)

或者您可以使用其他编辑器。例如,SourceInsight可以很好地在编辑器中实时生成调用/被调用的图形。

对于程序化输出:我发现oing C code unit testing on a shoestring非常有趣。对于Visual Studio,它需要一些手动工作,因为Visual Studio的C99兼容性很差。

外部工具(如doxygen和CppDepends)非常有用,只要你能忍受2个约束:

  • 不仅要调用依赖项,还要跟踪对全局变量的依赖性
  • 依赖是静态的

对于静态依赖项,请考虑以下示例:

void foo(boolean b)
{
   if (false == b)
   { bar1(); }
   else
   { bar2(); }
}

静态工具将输出bar1和bar2。 运行时调用图将显示bar1或bar2,具体取决于参数的值。