在每个C函数的开头自动运行代码

在每个C函数的开头自动运行代码,c,function,debugging,gcc,c-preprocessor,C,Function,Debugging,Gcc,C Preprocessor,我有一个与C差不多相同的问题,但是对于C来说: 由于我正在维护其他人的大型无文档项目,我希望有类似的代码 static C0UNT_identifier_not_used_anywhere_else = 0; printf("%s%s:%d#%d", __func__, strrchr(__FILE__,'/'), __LINE__, ++C0UNT_identifier_not_used_anywhere_else); 在每个函数的条目上运行,以便 记录什么叫什么,以及 可以判断函数在第n次

我有一个与C差不多相同的问题,但是对于C来说:

由于我正在维护其他人的大型无文档项目,我希望有类似的代码

static C0UNT_identifier_not_used_anywhere_else = 0;
printf("%s%s:%d#%d", __func__, strrchr(__FILE__,'/'), __LINE__, ++C0UNT_identifier_not_used_anywhere_else);
在每个函数的条目上运行,以便

  • 记录什么叫什么,以及
  • 可以判断函数在第n次调用时中断
  • 现有的代码包含数百个源文件,因此不可能放置宏,例如

    #define ENTRY_CODE ...
    ...
    int function() {
      ENTRY_CODE
      ...
    }
    
    在每个功能中。我也没有使用DevStudio、visualstudio或其他提供uu cyg\u profile\u func\u enter或类似扩展的编译器


    或者,我希望以类似的样式打印退出时每个函数的返回值。我也可以这样做吗?

    因为您已经用gcc标记了它,所以它有
    -finstrument functions
    选项:

    为函数的入口和出口生成检测调用


    了解您使用的编译器和可用的调试器会有所帮助。@PaulR-他将其标记为GCC-除此之外,您还需要什么?@Kevin Vermeer:他还声称他的编译器不支持GCC所支持的函数入口/出口挂钩,所以不清楚他是否真的在使用GCC