Hallo,
nur mal eine allgemeine Frage:
Ich habe ein paar floats, die ich gerne in AVR Studio debuggen möchte.
Normalerweise reicht es doch aus die Variable in der Deklaration kurz
volatile zu setzen. Nur bringt das bei mir nichts. Beim Anspringen heißt
es im Watch Window trotzdem noch "Location not valid".
Codeoptimierung ist an (-Os).
Gibt es eine Möglichkeit ohne Schauen in die Register (stelle ich mir
bei floats kompliziert vor) und ohne die Codeoptimierung auszuschalten
(Code wäre dann viel zu groß) die Sache zu debuggen?
Gruß
Bernhard
Also ehrlich Leute. Ihr habt 7 Minuten Zeit gehabt die Geduld des
Fragestellers zu erschöpfen und das reicht Euch noch nicht? Tststs. Seid
Ihr anspruchsvoll.
Bernhard N. schrieb:> Keiner ne Idee?
Poste ein abgespecktes Programm, welches das Problem zeigt und versetz
uns in die Lage, mit dem Problem hier bei uns lokal zu arbeiten.
Denn wie du so schön sagst: Eigentlich sollte ein volatile ausreichen,
damit der Compiler/LInker keinerlei Optimierung auf der Variablen macht.
Hehe, ja ich war ein wenig ungeduldig. Aber hier verschwinden ja die
Sachen so schnell auf Seite 2.
Ansonsten: Diese Zeile reicht schon vollkommen aus, dass es nicht
funktioniert:
volatile float DesHum_f = (float)DesHum; // DesHum ist uint8_t
beim Debuggen von DesHum_f
Oder so was:
volatile float test = FunktionMitFloatRueckgabe(float Param1, float
Param2);
Echt verrückt!
Ich muss das Problem wohl irgendwie nachstellen. Vermutlich klappt es im
kleinem aber eh nicht. Und das Ganze ist mir schon öfters aufgefallen,
dass das mit einem alleinigem volatile nicht getan ist... Wie debuggt
Ihr das denn?
Gruß
Bernhard
verwenden, dann gibt's
> 'dauerhafte' Speicherzuweisung im gewünschten Gültigkeitsbereich...
Wenn man halt endlich mal ein bischen Code sehen würde. Dann noch eine
kleine Markierung, an welcher Stelle das Programm steht, wenn er sich
die Variablen ansieht .....
Danke. Ich denke mit diesem Thema wird auch vielen Einsteigern geholfen.
Ich füge noch ein paar Suchtags hinzu:
Debugging
Debuggen
float
double
volatile
static
watch window
location not valid
Register
AVR Studio
global
funktionslokal
lokal
deklarieren
MK2
Gruß
Bernhard
Ja, danke.
Dieser Thread ist besonders wertvoll für Einsteiger, weil man
klar sieht, worum es geht.
Kein überflüssiger Quelltext, der nur ablenkt und genug Stichworte.
Also sehr hilfreich.
Klaus Wachtler schrieb:> Nimm am besten static, volatile und const zusammen.
Wenn es sich um Funktionsparameter handelt, könnte man auch zur
Vorsicht noch "restricted" hinzufügen. ;-)
Klaus Wachtler schrieb:> Was sollen denn die Einsteiger denken?
Wenn sie denken, haben wir doch schon mal was gewonnen. Ist doch
besser, als wenn sie nur blind abschreiben.
Hm, vielleicht hast du recht.
Langsam begreife ich: Wenn man aus allen Threads komplett alle harten
Fakten wie Quelltexte, vernünftige Beschreibungen, konkrete Daten etc.
entfernt, regt das die Phantasie und Kreativität viel mehr an. Ein paar
wirre Aussagen, ein paar wilde Spekulationen, alles lasch formuliert und
gezielt ein paar Fehler eingebaut und schon heizen die Synapsen beim
Leser wieder.
Ich glaube, das würde den Standort Deutschland endlich mal wieder
voranbringen.
Klaus Wachtler schrieb:> Du bist dich Moderator: magst du mal testweise die nächsten paar Threads> dahingehend modifizieren, damit man sieht, ob es sich bewährt?
Der eine Thread hier genügt doch als Test, und den muss man ja nicht
erst extra noch modifizieren...
Ein wirklich guter Debugger war AVR Studio aber leider noch nie,
das ist es, was die Leute dann zu derlei Dingen treibt. Schade,
dass die Anbindung des JTAG ICE so verkorkst ist (komplett auf AVR
Studio zugeschnitten), dass der GDB damit nun auch nicht gerade eine
Leuchte ist.