有没有办法在每次调用某个函数时用C或C++将调用堆栈转储到正在运行的进程中?我的 idea 是这样的:
void foo()
{
print_stack_trace();
// foo's body
return
}
其中print_stack_trace
的工作原理与Perl中的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库中是否存在这样的东西?
我在Linux上工作,使用GCC.
出身背景
我有一个测试运行,基于一些不应该影响这种行为的命令行switch ,它的行为有所不同.我的代码有一个伪随机数生成器,我假设它是根据这些switch 以不同的方式调用的.我希望能够对每一组switch 运行测试,看看是否对每一组switch 调用不同的随机数生成器.