有没有办法在每次调用某个函数时将调用堆栈转储到 C 或 C + + 中正在运行的进程中?我的想法是这样的:
void foo()
{
print_stack_trace();
// foo's body
return
}
在那里,print_stack_trace
的工作方式与佩尔的 caller
类似。
或者像这样:
int main (void)
{
// will print out debug info every time foo() is called
register_stack_trace_function(foo);
// etc...
}
其中 register_stack_trace_function
放置某种内部断点,这将导致每当调用 foo
时都打印堆栈跟踪。
在某些标准 C 库中是否存在类似的内容?
我正在使用 GCC 开发 Linux。
我有一个测试运行,它基于一些不应该影响此行为的命令行开关的不同行为。我的代码有一个伪随机数生成器,我假设它根据这些开关被不同地调用。我希望能够对每组开关运行测试,并查看是否对每个开关调用了不同的随机数生成器。