Vitajte na [www.pocitac.win] Pripojiť k domovskej stránke Obľúbené stránky

Domáce Hardware Siete Programovanie Softvér Otázka Systémy

Ako rozpoznať Stack Overflow

Programovanie jazyky spoliehať na dátové štruktúry zásobníku volaní --- niektoré jeho prítomnosť je výslovne programátor , zatiaľ čo všetci spoliehajú na zásobníku pre program, skoky , že sa musí vrátiť na miesto , kde vľavo je pôvodný program vypnutie po čo vykonala nejaký podprogram . Pred odovzdaním riadenia do užívateľského kódu , program nastaví maximálnu veľkosť zásobníka volaní , medzi inými prípravkami . Niekedy sa program preruší z dôvodu poruchy segmentácia , ktoré môže byť spôsobené rôznymi faktormi . Môžete ľahko zistiť , je pretečenie zásobníka je pri koreni problému pomocou ladiaceho programu . Veci , ktoré budete potrebovať klipart Zdrojový kód programu
kompilátor pre program
Source - level debugger s podporou pre zobrazovanie backtrace
Zobraziť ďalšie inštrukcie
1

prekompilovať program , ktorý sa dáva na segmentation fault tak , aby všetky symboly ladenia sú prepojené do neho . Napríklad , pre + + programu C na operačnom systéme s GNU sadu nástrojov , spustiť :

" g+ + - g program.Čo - o programe "

kde voľba " - g " inštruuje kompilátor obsahovať symboly ladenia .
2

spustite program , až sa zastaví v dôsledku poruchy segmentácie . Pre príklad , spustiť :

" Program "
3

Spustite ladiaci program na programe hneď po Segmentation fault . Pre príklad , spustiť :

" gdb programu "
4

Zobrazenie backtrace pomocou ladiaceho programu . Všetky Debuggers zdroj úrovni majú schopnosť zobrazenia reťazec vnorených funkcií vyvolanie v dobe programe havárie . Pre naše " gdb " Napríklad , zadajte vnútri " gdb : "

" backtrace "
5

skúmať backtrace pre známky s nekonečnou rekurziu . Je jeden názov funkcie opakovať viackrát , než je nutné pred haváriou ? Niektoré funkcie , volanie medzi sebou ( napríklad vzájomná rekurzia ) príliš mnohokrát pred haváriou ? Je Ak je odpoveď na tieto otázky je " áno " , program sa zastavil z dôvodu pretečenia zásobníka . Najpravdepodobnejšou príčinou pretečeniu zásobníka v high - úrovni jazyky sú nesprávne kódované základné prípady .

Najnovšie články

Copyright © počítačové znalosti Všetky práva vyhradené