Compilers
Als een met optimalisatie gecompileerd programma met een debugger wordt onderzocht, wordt de waarde van sommige variabelen soms als "niet beschikbaar" weergegeven. Wat is de belangrijkste reden?
- ABij optimalisatie kan de debugger het programma helemaal niet meer inlezen
- BDe waarden van variabelen veranderen bij elke compilatie willekeurig
- CDe waarde is niet meer aanwezig door hergebruik van registers of het verwijderen van berekeningen
Antwoord en toelichting tonen
Antwoord: C. De waarde is niet meer aanwezig door hergebruik van registers of het verwijderen van berekeningen
Bij optimalisatie worden variabelen niet in het geheugen geplaatst maar alleen in registers behandeld, en wordt het register na gebruik voor een andere waarde hergebruikt. Door constant propagation kan een berekening ook helemaal verdwijnen. Op het moment dat de debugger stopt, kan de waarde van die variabele daarom nergens meer bestaan, en er wordt bijvoorbeeld "wegoptimaliseerd" weergegeven. Bij debuggen wordt gewoonlijk de optimalisatie verzwakt of een optimalisatie-instelling voor debuggen gebruikt. De debugger kan het programma wel inlezen.