Forum: Compiler & IDEs Debugger mit globaler Variable geht nicht


von Frank (Gast)


Lesenswert?

Hallo!
Ich habe ein sehr seltsames Problem mit dem gdb unter eclipse.
Ich debugge eine Testanwendung auf einem Atmega16 mit einem AVRDragon 
über
die JTAg-Schnittstelle.
Wenn ich folgendes Programm debugge, funktioniert das ganze einwandfrei:
1
int main(void)
2
{
3
  uint8_t global;
4
  DDRB = 0xff;
5
  for(;;)
6
  {
7
    global++;
8
    PORTB = global;
9
  }
10
}
Habe einen Breakpoint auf global++ gesetzt. Klappt alles wie erwartet, 
Debugger hält, Zähler wird erhöht, LEDS an PortB werden gesetzt.


Mach ich die Variable "global" global :
1
uint8_t global;
2
3
int main(void)
4
{
5
  DDRB = 0xff;
6
  for(;;)
7
  {
8
    global++;
9
    PORTB = global;
10
  }
11
}

geht gar nichts mehr. Das Dissassembly zeigt mir, dass nach Betreten der 
main das Programm nach .do_clear_bss_start+2 springt, und von dort 
wieder in die main, und von dort wieder nach .do_clear_bss_start+2 ...

Was soll das? Hat jemand eine Erklärung dafür oder stehe ich gerade auf 
dem Schlauch??

Viele Grüße
Frank

von Eulerich (Gast)


Lesenswert?

Mach mal die global volatile, obs dann geht oder immer noch nicht.

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
Noch kein Account? Hier anmelden.