Compilerschalter

Gast #412218
Lesenswert?
• ▲
▼
Hallo,
Ich bin auf der Suche nach einer eleganten Debug-Möglichkeit mit
AVR-Studio. Ich habe mehrere Dateien in meinem Projekt (main.c, lcd.c,
uart.c usw.). Wenn ich jetzt das .elf-extrakt in AVR-Studio lade und
debugge, bleibt der Debugger immer an verschiedenen Stellen hängen. Zum
Beispiel dann, wenn er ein Busy-Flag aus dem LCD auslesen will, was es
ja im Software-Debugger nicht gibt.
Damit ich trotzdem debuggen kann, wollte ich jetzt mittels
Compilerschaltern diese kritischen Stellen wie folgt umgehen:
In meiner Datei main.c schreibe ich "#define SW_DEBUG" und direkt am
Anfang der vermeintlichen Funktionen (wo der Debugger hängenbleiben
würde) schreibe ich:

#ifdef SW_DEBUG
return;
#endif

Leider funktioniert das nicht. Habe ich da was nicht richtig
verstanden? Der AVR-Studio-Debugger springt trotzdem in die so
modifizierten Funktionen, obwohl ich den Compilerschalter gesetzt
habe.
Hat von Euch vielleicht einer eine Idee was ich falsch mache? Oder hat
jemand eine andere Idee, wie man seine Software simulieren kann, auch
wenn auf bestimmte Ereignisse von Außen gewartet wird.
Eine Möglichkeit wäre sicherlich die entsprechenden Portpins des
Simulators per Hand zu setzen, aber das ist mir zu aufwändig, da
manchmal hunderte Male auf Busy Flags und anderes gewartet wird.

Im vorraus besten Dank,

Oliver
Gast #412219
Lesenswert?
• ▲
▼
Wenn in main.c SW_DEBUG gesetzt wird, dann erfährt lcd.c nichts davon.

Im Studio gibt es getrennte Profiles für Debug und Optim. In der
Debug-Version schon im Studio das SW_DEBUG setzen, das kriegt dann
jedes Modul mit.
#412224
Lesenswert?
• ▲
▼
Menü: Project

Gaanz unten: Configuration Options

Darauf hin geht ein Dialog auf: Dort wählst du in der
linken Leiste gaaanz unten die Custom Options aus und
kannst daraufhin dem Compiler die Compilerflags mitgeben.

Ein mögliches Compilerflag ist es, dass er beim compilieren
deinen Switch von vorne herein vorgibt:

-DSW_DEBUG

Eine völlig andere Möglichkeit ist es, wenn du dir von hier
http://www.helmix.at/hapsim/
den Simulator holst und nach dem AVR-Studio startest. Der Simulator
verbindet sich dann mit dem WinAVR-Debugger und hängt dann
ein virtuelles LCD (oder ein paar Led oder Taster) an die
simulierten Ports an.
Gast #412225
Lesenswert?
• ▲
▼
Hallo,

sorry, das ich erst jetzt antworte! Ich habe meinen eigenen Bericht
nicht mehr wiedergefunden. Hatte ihn die ganze Zeit im µC-Forum gesucht
und nicht gefunden, aber egal.

Jetzt weiß ich auch, warum ich die Settings für den Compilerswitch
nicht finden konnte! Ich hatte im Studio nur das *.elf file geöffnet,
welches ich mit WinAVR generiert habe. Ich wußte bis dato gar nicht,
das ich im AVR-Studio neben Assembler auch die Möglichkeit der
C-Programmierung habe. Liegt wohl daran, das ich die Umstellung von
Assembler auf C über das Tutorial gemacht habe und da ist nur die Rede
vom "Programmers Notepad" Auf jeden Fall freue ich mich riesig, dass
ich im Studio auch alle Möglichkeiten habe, da ich aus Assemblerzeiten
dran gewöhnt bin.

Das mit dem Compilerflag funktioniert jetzt auch, obwohl ich nicht
verstehe, was das "-D" vor meinem "SW_DEBUG" genau bedeutet-
vielleicht define? Auf jeden Fall funktionierts!

Die Sache mit dem LCD-Simulator habe ich jetzt auch versucht und muss
sagen, dass das genau das ist, was ich schon immer vermisst habe! Hätte
ich das schon früher gewusst, hätte ich mir einige Stunden am
AVR-Simulator sparen können. Man lernt nie aus!

Allerbesten Dank nochmal für die Hilfen!

Oliver

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren