Computer programmeringssprog er afhængige af en kaldstakkens datastruktur --- nogle gøre sin tilstedeværelse eksplicit til programmøren , mens alle er afhængige af en stak for hopper programmet , der skal vende tilbage til det sted, hvor det oprindelige program slap efter have udført en slags underprogram. Før du overfører kontrollen til brugerkode sætter et program den maksimale størrelse for kaldstakkens bl.a. præparater. Undertiden et program afbryder på grund af en segmenteringsfejl , som kan være forårsaget af en række faktorer . Du kan nemt finde en stack overflow er roden af problemet ved at bruge en debugger . Ting du skal
Kildekode for programmet
Compiler for programmet
Source -level debugger med understøttelse til visning af et backtrace
Vis Flere Instruktioner
1 < p> Genkompilering det program, der giver segmenteringsfejl så alle fejlsøgningssymboler er knyttet ind i det. For eksempel til en C + +-programmet på ethvert operativsystem med GNU suite af værktøjer , udføre : Hej
" g+ + - g program.C - o -programmet "
hvor " - g " valgmulighed instruerer compiler til at omfatte debugging symboler.
2
udføre programmet indtil den stopper på grund af en segmentering skyld. For eksempel , udføre : Hej
"program"
3
Invoke debugger på programmet lige efter segmenteringsfejl . For eksempel , udføre : Hej
" gdb -program "
4
Vis en backtrace bruge debugger . Alle kilde niveau debuggere har kapacitet til visning af kæden af indlejrede funktion invokationer på tidspunktet for programmets nedbrud . For vores " gdb " Skriv f.eks inside " gdb : "
" backtrace "
5
Undersøg backtrace for tegn på en uendelig rekursion . Er en enkelt funktion navn gentages flere gange end nødvendigt inden styrtet ? Er et par funktionerne opkald hinanden (for eksempel gensidig rekursion ) for mange gange inden styrtet ? Hvis svaret på begge spørgsmål er " ja " programmet stoppet på grund af en stak overflow . Den mest sandsynlige årsag til stakken overløb på højt niveau sprog er forkert kodet basere sager.