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