我有一个C程序,它在深入到无限递归混乱之后会出现错误。在GDB中回溯过程是没用的,因为调用堆栈帧至少有 1000帧深,而重复的函数调用是四个常见的递归函数调用的系列(因此断点似乎无用)。重复调用backtrace只是一遍又一遍地读出四个函数名。在我看来,向上“向上”向上......会让我更高,所以我可以看到这种模式最初开始发生的地方,但似乎从最顶层的呼叫开始会更有效率堆栈框架和降低相反,因为我的预感是无限递归在过程的早期开始。如果调用堆栈总共有N帧,我知道我可以做到
gdb>> up N
到达堆栈的顶部(第N帧),但问题是我不知道N.是否有命令查找调用堆栈中的总帧数?或者,是否有一个灵活的内置GDB命令用于跳转到最顶层的帧?在我看来,最顶层的框架应该是main()函数 - 我可以利用这些知识到达最顶层的框架吗?