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; }
Gast
#2132393
das delay_ms ist ein macro, wird also geinlined. Ist keine funktion, deswegen kann der debugger es nicht überspringen.
Danke Martin. Das beruhigt mich dann schon mal.
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.
Gast
#2132852
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.
Antwort schreiben
Bitte melde dich an, um einen Beitrag zu schreiben.