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?

  1. ABij optimalisatie kan de debugger het programma helemaal niet meer inlezen
  2. BDe waarden van variabelen veranderen bij elke compilatie willekeurig
  3. 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.

Dit onderwerp oefenen Naar de onderwerppagina

Meer vragen over Compilers

  1. Welke uitspraak over de teruggegeven waarde en de resterende code van de bovenstaande functie is juist wanneer constant propagation, constant folding en verwijdering van dode code voldoende zijn toegepast?
  2. Welke uitspraak over de rol van lexicale analyse in een compiler is juist?
  3. Wat doet de parsing (syntactische analyse) van een compiler?
  4. Welke fout wordt het best gevonden door de semantische analyse van een compiler?
  5. Welke uitspraak over een abstracte syntaxisboom (AST) is juist?

Vergelijkingen bij dit onderwerp