Hallo, beim Debuggen eines C-Programm auf einem Atmega168 im AVRStudio mit dem AVR-Dragon wird der Inhalt von lokalen Variablen im Watchfenster meistens nicht angezeigt. Bei globalen oder statischen Variablen funktionierts. Bei irgendeiner lokalen hat es, soweit ich mich erinnern kann, jedoch auch schon mal funktioniert. Bei der Suche nach dem Inhalt der nicht watchbaren Variablen sah ich, dass sie in Registern abgelegt waren, welche ich schon anschaun und auch ändern kann. Wie kann ich lokale Variable im Debugger sehen? Hat jemand eine Idee? Danke, Johngo
Lokale Variablen kannste nur dann "watchen" wenn du dich gerade im Scope der Variable befindest. Will heissen, wenn du grad in der dazu gehörigen Funktion bist. Sonst existiert die Variable ja logischerweise auch nicht ;-) Aber grundsätzlich gibts da bei C und AVR-Studio öfters Probleme...manchmal findet er die lokalen Vars auch nicht obwohl sie im Scope sind. Ist aber in der letzten Studio Version besser geworden hatte ich den Eindruck. Gruß Fabian
was häufig hilft, wenn im Watchfenster "invalid location" steht, ist die Variable als volatile zu deklarieren.
Ich hab jetzt mal ohne Optimierung compiliert, mit -O0, und tatsächlich, jetzt kann ich die lokalen Variablen auch sehen! Vielen Dank, Johngo
John Go wrote: > Ich hab jetzt mal ohne Optimierung compiliert, mit -O0, und tatsächlich, > jetzt kann ich die lokalen Variablen auch sehen! Nicht alles, was du als lokale Variable benötigst, benötigt der Compiler ebenso als eine solche. Sehr oft ist die Lebenszeit einer lokalen Variablen nur einige Zeilen im generierten Assemblercode, und derartige Konstellationen werden in herkömmlichen Debuginfor- mationen nur schlecht abgebildet.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.