【问题标题】:Automatically running code at the start of every C function在每个 C 函数开始时自动运行代码
【发布时间】:2011-12-13 14:18:09
【问题描述】:

我有一个与 How to add code at the entry of every function? 几乎相同的问题,但对于 C

由于我正在维护别人的大型无证项目,我希望有类似于

的代码
static C0UNT_identifier_not_used_anywhere_else = 0;
printf("%s%s:%d#%d", __func__, strrchr(__FILE__,'/'), __LINE__, ++C0UNT_identifier_not_used_anywhere_else);

在每个函数的入口处运行,以便我

  1. 记录什么叫什么,并且
  2. 可以判断,在第 nth 次调用函数时会中断。

现有代码包含数百个源文件,因此放置宏例如是不可行的

#define ENTRY_CODE ...
...
int function() {
  ENTRY_CODE
  ...
}

在每个函数中。我也没有使用 DevStudio、Visual Studio 或其他提供 __cyg_profile_func_enter 或此类扩展的编译器。

或者,我想在退出时以类似的方式打印每个函数的返回值。我也可以吗?

【问题讨论】:

  • 了解您正在使用的编译器会有所帮助
  • 还有什么调试器可用。
  • @PaulR - 他给它贴上了 GCC 的标签 - 除此之外你还想要什么?
  • @Kevin Vermeer:他还声称他的编译器不支持函数进入/退出钩子,而 gcc 支持,所以不是 100% 清楚他是否真的在使用 gcc

标签: c function debugging gcc c-preprocessor


【解决方案1】:

由于您已使用 gcc 进行标记,因此它具有 -finstrument-functions 选项:

为函数的进入和退出生成检测调用。 ...

【讨论】:

    猜你喜欢
    • 2021-07-19
    • 2020-02-26
    • 2011-06-02
    • 2020-11-21
    • 2018-07-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-11-02
    相关资源
    最近更新 更多