ricompilare il programma che sta dando l' errore di segmentazione in modo che tutti i simboli di debug sono collegati in esso. Ad esempio, per un programma C + + su qualsiasi sistema operativo con la suite di strumenti di GNU , eseguire : opzione
" g+ + - g programma program.c -o "
dove il " - g" indica al compilatore di includere i simboli di debug .
2
Eseguire il programma fino a quando non si blocca a causa di un errore di segmentazione . Per l'esempio , eseguire :
" programma "
3
Invoca il debugger sul programma subito dopo l' errore di segmentazione . Per l'esempio , eseguire :
" programma gdb "
4
Visualizzare un backtrace utilizzando il debugger . Tutti i debugger a livello di sorgente hanno la capacità di visualizzare la catena di invocazioni di funzioni annidate al momento del crash programma . Per il nostro esempio " gdb " , entrare dentro " gdb : "
" backtrace "
5
Esaminare il backtrace per i segni di una ricorsione infinita . È un singolo nome di funzione ripetuto più volte di quanto necessario, prima del crollo ? Sono alcune funzioni di chiamata tra loro ( per esempio , la ricorsione mutua ) troppe volte prima del crollo ? Se la risposta a entrambe le domande è "sì", il programma interrotto a causa di un overflow dello stack . La causa più probabile di overflow dello stack in linguaggi di alto livello sono codificati in modo non corretto i casi di base .
Programmazione © www.354353.com