gpt4 book ai didi

c - 跟踪函数调用

转载 作者:行者123 更新时间:2023-11-30 16:03:02 25 4
gpt4 key购买 nike

我想记录 C 程序执行期间进行的函数调用。这个想法是创建一个函数调用历史记录。我想要这个,这样我就可以以编程方式验证是否调用了测试假函数。我不关心参数或返回值。理想情况下,我希望它看起来像这样:

long longfunc0();
void voidfunc2(char arg0, char arg1);

typedef void (*varargs_funcptr)(...);
void test1()
{
varargs_funcptr function_calls[10];
function_calls[0] = longfunc0;
function_calls[1] = voidfunc2;
assert(function_calls[0] == longfunc0);
}

是否可以创建一个 typedef,以便我不需要显式转换为 varargs_funcptr?

最佳答案

如果您只记录运行的函数,并且稍后不会使用这些指针,则将函数指针转换为无符号整数(具有适合您的体系结构的长度)可能会更容易。您仍然可以将程序末尾的所有指针作为十六进制地址“打印”出来,并且参数类型或数量是什么并不重要。

这里的问题是,每次程序运行时,您的函数可能不会位于完全相同的内存地址。这使得弄清楚哪个函数与哪个指针对应变得更加困难。它需要更多内存,但您可能会更幸运地存储函数名称的字符串表示形式。

关于c - 跟踪函数调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4500092/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com