Hallo, ich debugge gerade ein C-Prog. mit o.g. ICE. Wenn ich den ICE anhalte, werde alle globalen Var. im Watchfenster mit ihrem Wert angezeigt, aber bei den lokalen Var. wird nur die Speicherklasse "automatic" als Wert angezeigt. Natürlic habe ich den ICE dort angehalten, wo die lokale Var. existiert. Gruß WoW
Du kannst das nochmal probieren mit ausgeschalteter Optimierung.
Ich habe jetzt das Disassembly angeschaut. Die Var. wird in einem Prozessorregister gehalten. Scheinbar ist das der Debugging-SW zu kompliziert, den Ort herauszufinden. Beim Compilieren entscheidet ja der Compiler, wo er die Variable hält (Stack/Register) An die Info wird der Debugger nicht (einfach?) rankommen. Für globale Variablen wird es da Adresslisten geben. Gruß WoW
Grundsätzlich kann sein, daß Compiler bestimmte Variable wegoptimiert und Berechnung anders macht. Compiler soll Ergebnis wie erwartet geben. Wie er das macht bleibt aber seine private Sache. Wenn es wichtig ist, alle Variablen wie geschrieben zu sehen, kann man sie als volatile angeben. Dann wird natürlich alles langsam, aber Variable wird immer aus SRAM gelesen und in SRAM gespeichert.
:
Bearbeitet durch User
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.