Debuggen von Code, der mit Optimizer compiliert wurde

Gast #1679947
Lesenswert?

Hallo zusammen!

Ich stoße schon mehrmals auf das Problem, dass beim dem Code, der mit 
aktiviertem Optimizer compileirt wurde, sich einige Variablen beim 
Debuggen gar nicht anzeigen lassen. Die werden wohl vom Compiler 
wegoptimiert worden sein.

Manche Variablen braucht man aber zum Debuggen. Z.B. eine Laufvariable 
in einer for-Schleife, um zu Wissen bei wie vieltem Durchlauf etwas 
eintritt. Was macht man denn in einem solchen Fall? Ist volatile hier 
die einzige Lösung?

Danke!!
Gast #1680003
Lesenswert?

Aber ich habe hier schon in einem Thread gelesen, dass man die 
Optimierung schon einsetzen sollte!

Oder meinst du, zum Debuggen Optimierung deaktivieren und wenn der Code 
schon "fehlerfrei" ist, die Optimierung wieder aktivieren?
#1680018
Lesenswert?

Das ist natürlich schon ein Problem.
Auf der einen Seite kann Debuggen von optimiertem Code frustrierend sein 
- Debuggen von optimiertem Code kann so zu Stress ausarten. Auf der 
anderen Seite deckt der Optmizer so manchen Programmfehler auf, der ohne 
Optimizer nicht existiert, bzw. sich nicht auswirkt.

Man kann zb so vorgehen: Entwickeln ohne Optimizer. Im Debugger kann man 
sich Abläufe ansehen, Variablen verfolgen. Dann wird der Optimizer 
zugeschaltet. Verhält sich dann das Programm anders, so hat man irgendwo 
gegen eine C-Regel verstossen, die vom Optimizer gnadenlos ausgenutzt 
wird. Man kann jetzt versuchen, den optimierten Code im Debugger nur im 
Hinblick darauf zu untersuchen. Dazu gehören Variablen ansehen, sofern 
sie nicht entfernt wurden, aber der Optimizer ist an dieser Stelle oft 
eher nutzlos geworden. Hier muss man dann auf andere Debugmöglichkeiten 
wie strategische Ausgaben, Leds die aufleuchten, etc. zurückgreifen und 
den Rest per Umkehrschluss und erhöhtem Einsatz der grauen Zellen 
erledigen.
Das geht aber nur dann, wenn das Verfahren prinzipiell schon ausgetestet 
und für gut befunden wurde. Dazu benötigt es aber den Optimizer meistens 
nicht.

Es empfiehlt sich auch während der Entwicklungsarbeit immer wieder mal 
zur Optimizer Variante zu schalten und den Code dort zu testen und 
gefundenen Ungereimtheiten sofort nachzugehen. Je länger man das 
hinauszögert, umso mehr Code hat man dann, der ein potentieller 
Übeltäter sein kann.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren