У мене є програма C, яка провалюється, коли спускається вглиб нескінченного рекурсивного безладу. Зворотний шлях процесу в GDB марний, оскільки кадр стека викликів має глибину не менше 1000 кадрів, а повторювані виклики функцій - це серія з чотирьох загальноприйнятих рекурсивних викликів функцій (тому точки перерви здаються марними). Повторні дзвінки для зворотного зв'язку просто зчитують чотири назви функцій, знову і знову. Мені прийшло в голову, що виконання «вгору», «вгору», «вгору» ... підніме мене вище, тому я міг бачити, де вперше почала виникати ця закономірність, але, здається, було б ефективніше починати з самого верхнього дзвінка стек-кадр і замість цього відійдіть, тому що я вважаю, що нескінченна рекурсія починається на початку процесу. Якщо стек викликів мав N кадрів, я знаю, що міг би просто зробити
gdb>> up N
щоб дістатися до вершини стека (N-й кадр), але проблема полягає в тому, що я не знаю N. Чи є команда для пошуку загальної кількості кадрів у стеку викликів? Або є гладка вбудована команда GDB для переходу на верхній кадр? Мені прийшло в голову, що найвищий кадр повинен бути основною () функцією - чи можу я використовувати ці знання, щоб дійти до самого верхнього кадру?