www.mikrocontroller.net

Forum: Compiler & IDEs Lokale Variable nicht watchbar im AVRStudio mit Dragon


Autor: John Go (johngo)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: Simon K. (simon) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Optimierungen ausschalten eventuell.

Autor: fabs (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: Klaus (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
was häufig hilft, wenn im Watchfenster "invalid location" steht, ist die 
Variable als volatile zu deklarieren.

Autor: John Go (johngo)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich hab jetzt mal ohne Optimierung compiliert, mit -O0, und tatsächlich, 
jetzt kann ich die lokalen Variablen auch sehen!

Vielen Dank,

Johngo

Autor: Jörg Wunsch (dl8dtl) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.