用C或C ++打印调用堆栈
有没有办法在每次调用某个函数时在C或C ++中正在运行的进程中转储调用堆栈?我的想法是这样的:
void foo(){ print_stack_trace(); // foo's body return}
其中的print_stack_trace
工作方式类似于caller
Perl。
或类似的东西:
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上工作。
我有一个测试运行,基于一些不应该影响此行为的命令行开关,行为不同。我的代码有一个伪随机数生成器,我假设它是基于这些开关被不同地调用的。我希望能够使用每组开关运行测试,并查看随机数生成器是否针对每个开关进行不同的调用。
qq_花开花谢_0