Compiler

Beim Untersuchen eines mit Optimierung kompilierten Programms im Debugger werden manche Variablenwerte als „nicht darstellbar“ angezeigt. Was ist der Hauptgrund?

  1. AMit Optimierung kann der Debugger das Programm überhaupt nicht mehr laden
  2. BDie Variablenwerte ändern sich bei jeder Kompilierung zufällig
  3. CDer Wert ist durch Wiederverwendung von Registern oder Entfernung von Berechnungen nicht mehr vorhanden
Antwort und Erläuterung anzeigen

Antwort: C. Der Wert ist durch Wiederverwendung von Registern oder Entfernung von Berechnungen nicht mehr vorhanden

Bei der Optimierung werden Variablen nicht im Speicher, sondern nur in Registern gehalten, und nach der letzten Verwendung wird das Register für einen anderen Wert wiederverwendet. Durch Konstantenpropagierung kann auch die Berechnung selbst verschwinden. Daher steht der Wert der Variablen beim Anhalten im Debugger mitunter nirgends mehr zur Verfügung, und es wird etwa „wegoptimiert“ angezeigt. Beim Debuggen wird üblicherweise die Optimierung abgeschwächt oder eine für Debugging gedachte Optimierungseinstellung verwendet. Der Debugger wird nicht unfähig, das Programm zu laden.

Dieses Thema üben Zur Themenseite

Weitere Fragen zu Compiler

  1. Welcher Rückgabewert und welcher verbleibende Code der obigen Funktion ist richtig, wenn Konstantenpropagierung, Constant Folding und Entfernung von totem Code gründlich angewendet werden?
  2. Welche Aufgabe hat die lexikalische Analyse eines Compilers?
  3. Was leistet die Syntaxanalyse (Parsing) eines Compilers?
  4. Welches ist das am besten geeignete Beispiel für einen Fehler, den die semantische Analyse des Compilers findet?
  5. Welche Eigenschaft des abstrakten Syntaxbaums (AST) ist richtig?

Vergleiche zu diesem Thema