AVR Studio Debug "The symbol could not be found"

Gast #620566
Hallo!

Kann mir jemand helfen. Ich wollte das On-Chip-Debugging mit dem JTAG 
ICE mkII testen. Leider scheitert das schon bei folgendem 
Minimalprogramm
1
int main() {
2
   uint8_t i = 0;
3

4
   while (1) {
5
      i++;
6
   }
7
}

Ich wollte einen Data-Breakpoint auf 'i' setzen bzw. 'i' als 
Watch-Variable verwenden. Bei ersterem bekomme ich im Fenster 'Add data 
breakpoint' die Meldung 'The symbol 'i' could not be found'. Wenn ich 
das mit der Watch-Variable versuche bekomme ich die Meldung 'Location 
not valid'.

Mache ich einen systematischen Fehler oder warum funktioniert rein 
garnichts?

Danke für die Hilfe,
Franz.
Gast #620572
Hallo Franz,

> 'The symbol 'i' could not be found'
hört sich danach an, dass der Präprozessor mir Dir schimpft.

Alle Includes da? Die, z.B.:
#include <avr/io.h>
#include <stdint.h>

Gruß
Nils
Gast #620578
Hm...

Wenn ich das so anschaue: das Porgramm macht ja auch nichts. Kein 
Schwein interessiert es, wie gross "i" gerade ist. Soll heissen:
Vielleicht hast du alles wegoptimiert?!
Wäre jedenfalls meine erste Vermutung.
Entweder Optimierung aus oder
 PORTA = i++;
statt
 i++;
Dann natürlich mit #include <avr/io.h>
#620590
>hört sich danach an, dass der Präprozessor mir Dir schimpft.

Nö, es ist der Debugger.
Vermutlich optimiert der Compiler alles, was mit i zu tun hat einfach 
weg, weil, wie Jochen schon schrieb, nichts ausser Hochzählen damit 
gemacht wird.
Gast #620657
Natürlich - ich hab die Rechnung ohne den Compiler gemacht.
'i' wird tatsächlich wegoptimiert. Das lässt sich z.B. durch ein 'PORTx 
= i;' in der Schleife vermeiden.
Jetzt kann ich 'i' auch bequem als Watch-Variable markieren und dessen 
aktuellen Wert beobachten.

Danke für die Tips,
Gruß Franz.
Gast #620686
Ein kleines Problem gibt es noch bei folgendem Szenario:
1
void bla() {
2
  uint8_t x = 0;
3

4
  PORTA = x;
5
  x++;
6
  PORTA = x;
7
  x++;
8
  PORTA = x;
9
}
10

11

12
int main() {
13
  DDRA |= 0xFF;
14

15
  bla();
16
}

Wenn ich jetzt hier versuche in der Funktion 'bla()' den Inhalt von 'x' 
als Watch-Variable zu kontrollieren, dann bekomme ich die Meldung 
'Location not valid'. Warum funktioniert das nicht?

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 19 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.