Forum: Mikrocontroller und Digitale Elektronik AVR Studio 4, kann der Debugger das nicht?


von Helmut S. (helmuts)


Lesenswert?

Hallo,
Ich habe untenstehenden ganz einfachen C-code. Wenn ich da mit dem 
JTAG-ICE debugger durchgehe, dann "versumpft"  der Debugger offenbar in 
_delay_ms() anstatt da drüber zu gehen.
Vretsehe ich den Modus "Step over" nicht richtig?
--Helmut


#define F_CPU 8000000
#include <avr/io.h>
#include <util/delay.h>

int main(void)
{
  DDRB = 0xFF;

  while (1)
  {
    PORTB = 0xFF;
    _delay_ms(100);
    PORTB = 0x00;
    _delay_ms(100);
  }
  return 0;
}

von Martin (Gast)


Lesenswert?

das delay_ms ist ein macro, wird also geinlined. Ist keine funktion, 
deswegen kann der debugger es nicht überspringen.

von Helmut S. (helmuts)


Lesenswert?

Danke Martin. Das beruhigt mich dann schon mal.

von Hans W. (hans_wurst)


Lesenswert?

Martin schrieb:
> das delay_ms ist ein macro, wird also geinlined. Ist keine funktion,
> deswegen kann der debugger es nicht überspringen.

Gut zu wissen, aber kann mir mal jemand erklären warum er es nicht 
schafft "inlines" zu debuggen?

von Hans W. (hans_wurst)


Lesenswert?

Ich meinte damit den Debugger. Also, warum es der Debugger nicht schafft 
die inlines zu debuggen.

von Helmut S. (helmuts)


Lesenswert?

Hans Wurst schrieb:
> Ich meinte damit den Debugger. Also, warum es der Debugger nicht schafft
> die inlines zu debuggen.

Das "Problem" ist, dass man in C gerne das Kommando step-over nimmt. 
Damit soll der Debugger von einer C-Zeile zur nächsten C-Zeile springen.
In diesem Fall geht der Debugger aber in das delay-makro und stepped 
durch jeden Assembler-Befehl. Bei dem Delay-Macro müsste ich da ewig 
klicken um da wieder herauzukommen.

von Guru (Gast)


Lesenswert?

Im Simulator gibt es doch die Möglichkeit das Programm bis zu einer 
bestimmten Zeile laufen zu lassen und erst dann zu stoppen.
Geht das vielleicht auch im Debugger?
Dann könnte man ihn ja bis zur Zeile nach dem Delay laufen lassen.

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.