【发布时间】: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);
在每个函数的入口处运行,以便我
- 记录什么叫什么,并且
- 可以判断,在第 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