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; }
das delay_ms ist ein macro, wird also geinlined. Ist keine funktion, deswegen kann der debugger es nicht überspringen.
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?
Ich meinte damit den Debugger. Also, warum es der Debugger nicht schafft die inlines zu debuggen.
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.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.