Могу ли я заставить GDB / DDD быстро перейти к началу бесконечной ошибки рекурсии? - PullRequest
0 голосов
/ 12 мая 2019

Если у меня есть бесконечная ошибка рекурсии, когда я обнаруживаю это в ddd, потребуется много времени, чтобы создать обратную трассировку от segfault.

Если a, b,, c, и т. Д. Являются функциями и стек вызовов равен

 a b c c c c ... (thousands) ... c c (SIGSEGV)

или

 a b c b c ... (thousands) ... b c b c (SIGSEGV)

Для создания связанной трассировки стека может потребоваться несколько минут.

Если я подозреваю, что это так, могу ли я сказать gdb / ddd, чтобы он быстро пропускал начало повторений, а не ждал, пока он отследит весь путь назад?

1 Ответ

1 голос
/ 12 мая 2019

Вам не нужно печатать полную обратную трассировку в случае бесконечной рекурсии. Вам нужно только несколько внешних кадров , чтобы понять причину бесконечной рекурсии. Например, вы можете напечатать 10 внешних кадров с помощью команды:

(gdb) bt -10

Точное количество кадров для печати может варьироваться и зависит от того, где начинается бесконечная рекурсия.

...