Compiler
Beim Untersuchen eines mit Optimierung kompilierten Programms im Debugger werden manche Variablenwerte als „nicht darstellbar“ angezeigt. Was ist der Hauptgrund?
- AMit Optimierung kann der Debugger das Programm überhaupt nicht mehr laden
- BDie Variablenwerte ändern sich bei jeder Kompilierung zufällig
- 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.