Ho un programma in C che segna i guasti dopo essere sceso in profondità in un disordine ricorsivo infinito. Il backtracing del processo in GDB è inutile perché il frame dello stack di chiamate ha una profondità di almeno 1000 frame e le chiamate di funzione ripetute sono una serie di quattro chiamate di funzione ricorsive comuni (quindi i punti di interruzione sembrano inutili). Le chiamate ripetute a backtrace leggono semplicemente i quattro nomi delle funzioni, ancora e ancora e ancora. Mi è venuto in mente che fare 'su' 'su' 'su' ... mi avrebbe portato più in alto, così ho potuto vedere da dove è iniziato questo schema, ma sembra che sarebbe più efficiente iniziare dalla chiamata più in alto impilare il frame e scendere invece, perché il mio sospetto è che la ricorsione infinita inizia all'inizio del processo. Se lo stack di chiamate avesse un totale di N frame, so di poterlo fare
gdb>> up N
per arrivare in cima allo stack (l'ennesimo frame), ma il problema è che non conosco N. Esiste un comando per trovare il numero totale di frame nello stack delle chiamate? Oppure, c'è un comando GDB integrato per saltare al frame più in alto? Mi è venuto in mente che il frame più in alto dovrebbe essere la funzione main () - posso sfruttare quella conoscenza per arrivare al frame più in alto?