Forum: Compiler & IDEs Atmel Studio beim debuggen Value = Unknwon identifier


von Kilian K. (kellermaaan)


Lesenswert?

Hallo zusammen,

ich habe leider ein kleines Problem mit meinem Atmel Studio.

Ich habe vor meinen Arduino Due (Chip Atsam3x8e) mit einem Atmel-ICE 
Basic über die JTAG-Schnittstelle zu debuggen. Das funktioniert auch 
soweit wunderbar. Ich kann schrittweise durch meinen Code steppen. 
Allerdings kann ich mir keine Variablen anzeigen lassen. Wenn ich z.B. 
dem Watch-Fenster eine Variable hinzufüge, wird mir nur bei Value 
"Unknown identifier" und bei Type "Error" angezeigt... Die 
Lösungsansätze, die Variablen als "volatile" zu deklarieren habe ich 
schon probiert, funktioniert aber leider nicht.

Hätte jemand vielleicht eine Idee was ich machen muss? Es wäre echt nett 
wenn mir jemand helfen könnte!!!

Mfg Kilian

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

Kilian K. schrieb:
> Hätte jemand vielleicht eine Idee was ich machen muss?

Für Probleme mit deren IDE kannst du natürlich immer auch den Support
von AtMicrochip kontaktieren.

Ansonsten kannst du ja hier die ELF-Datei mal als Anhang hochladen
und sagen, welche Variablen das beispielsweise so betrifft.

von Kilian K. (kellermaaan)


Angehängte Dateien:

Lesenswert?

Ich habe hier mal ein ganz einfaches Test-Programm geschrieben.

Wenn ich dann versuche, die Variablen "state" und "counter" mir im 
Debugger anzeigen zu lassen, erhalte ich immer nur "Unknown identifier". 
Wenn ich die Variablen mit "volatile" global deklariere, funktioniert 
das. Allerdings habe ich bereits ein größeres Projekt, welches ich 
debuggen möchte und möchte jetzt ehrlich gesagt nicht jede einzelnen 
Variable global machen.

Ich finde leider auch echt keine Lösung wie das funktionieren soll.

von Aruinoquäler (Gast)


Lesenswert?

Kilian K. schrieb:
> Ich finde leider auch echt keine Lösung wie das funktionieren soll.

Gibt es immer noch die relativ banale Erklärung dass der
Compiler die gewünschte Variable weg-optimiert, dann sieht
man sie im Debugger auch nicht.

Also im Zweifelsfall mit Null-Optimierung debuggen.

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

Kilian K. schrieb:
> möchte jetzt ehrlich gesagt nicht jede einzelnen Variable global machen.

Damit sie nicht wegoptimiert werden, müssen sie ja nur (vorübergehend)
"volatile" deklariert werden, deshalb müssen sie nicht unbedingt
global werden.

Aruinoquäler schrieb:
> Also im Zweifelsfall mit Null-Optimierung debuggen.

Dann debuggt man allerdings eben auch etwas komplett anderes als das,
was man eigentlich möchte.

: Bearbeitet durch Moderator
von Kilian K. (kellermaaan)


Lesenswert?

Ich habe mal alle Optimierungen ausgeschaltet aber dennoch wurden die 
Variablen nicht angezeigt...

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

Die Studio-Version ist aber auch eine aktuelle, oder?

Wenn ja, dann kannst du ja mal einen Bugreport bei Atmel dafür
aufmachen.

von Aruinoquäler (Gast)


Lesenswert?

Jörg W. schrieb:
> Dann debuggt man allerdings eben auch etwas komplett anderes als das,
> was man eigentlich möchte.

Der logische Verlauf des Programms sollte sich dadurch nicht
ändern, sonst hat der Programmierer was falsch gemacht.
Gute Lehrstunde ....

Kilian K. schrieb:
> aber dennoch wurden die Variablen nicht angezeigt...

Glaub ich nich ....
(alle Objects gelöscht und neu compiliert?)

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

Aruinoquäler schrieb:
> Der logische Verlauf des Programms sollte sich dadurch nicht
> ändern

Selbst wenn: allein das geänderte Timing durch die fehlende
Optimierung kann im Embedded-Bereich schnell zum k.o.-Kriterium
werden, ganz davon abgesehen, dass der Salat danach vielleicht
gar nicht mehr in den Controller passt.

von Kilian K. (kellermaaan)


Lesenswert?

Jörg W. schrieb:
> Die Studio-Version ist aber auch eine aktuelle, oder?

Die Version 7.0.1188 ist installiert.

Aruinoquäler schrieb:
> Glaub ich nich ....
> (alle Objects gelöscht und neu compiliert?)

Ich habe alles mal gelöscht aber dennoch wird mir nichts angezeigt...

Ich habe noch Visual Micro für Atmel Studio installiert. Könnte das 
vielleicht der Grund sein??

von Arduinoquäler (Gast)


Lesenswert?

Kilian K. schrieb:
> Ich habe alles mal gelöscht aber dennoch wird mir nichts angezeigt...

Mach doch mal ein kleines Beispielprogramm welches den Fehler
nachvollziehbar macht und lade es hier hoch.

Ich hab hier auch das Studio 7.0.1188 laufen, dann könnte
"man" mal nachschauen.

von Kilian K. (kellermaaan)


Angehängte Dateien:

Lesenswert?

Im Anhang ist ein ganz simples Programm mit 2 Variablen. Wenn ich mir 
"counter" und "state" im Debugger anzeigen lassen möchte, bekomme ich 
immer nur " Unknwon identifier".
Das zweite Projekt ist das zum debuggen mit dem Atmel-ICE Basic.

: Bearbeitet durch User
von Arduinoquäler (Gast)


Angehängte Dateien:

Lesenswert?

Also ich habe mich in das Chaos deines Projekts nicht
eingearbeitet (da geht es wild durch den Gemüsegarten),
dafür aber ein neues Projet generiert das eigentlich
das tun sollte was du in deinem Beispiel angedacht hast.

Prinzipiell fehlt es dir vermutlich am Detailwissen wie
man so ein Projekt anlegt.

Der Arduino Due braucht auch ein Minimum an Initialisierungs-
Code sonst funktioniert er wohl nicht wie erwartet. Das alles
wird einem von der Arduino IDE abgenommen (wenn man sie benutzt),
aber auch Atmel bietet ja beim Anlegen einenes neuen Projektes
einen Arduino Due an (siehe mein Projekt) .....

von Arduinoquäler (Gast)


Lesenswert?

Arduinoquäler schrieb:
> das tun sollte was du in deinem Beispiel angedacht hast.

... und ja, man kann die Variablen im Debugger
(ATMEL ICE) tatsächlich sehen!

von Kilian K. (kellermaaan)


Lesenswert?

Jetzt wurden mir die Variablen angezeigt. Wie hast du das denn genau 
gemacht??? Ich habe leider vorher noch nie mit Atmel Studio 
gearbeitet...

Arduinoquäler schrieb:
> Der Arduino Due braucht auch ein Minimum an Initialisierungs-
> Code sonst funktioniert er wohl nicht wie erwartet. Das alles
> wird einem von der Arduino IDE abgenommen (wenn man sie benutzt),
> aber auch Atmel bietet ja beim Anlegen einenes neuen Projektes
> einen Arduino Due an (siehe mein Projekt)

Ich habe eigentlich nur ein ganz normales Arduino Projekt angelegt. Muss 
man noch irgenwas spezielles einstellen?

Danke schon mal für deine Hilfe!!

von Arduinoquäler (Gast)


Lesenswert?

Kilian K. schrieb:
> Ich habe eigentlich nur ein ganz normales Arduino Projekt angelegt.

Ich habe ein ganz normales C-Projekt angelegt und den
SAM3X8E angenommen wie er auch auf dem Due vorhanden ist.

Will man wirklich den SAM3X8E so laufen lassen wie er auf dem
Due drauf ist dann muss man noch etwas mehr tun damit Takt
etc stimmen (aber das wird wohl mit dem Arduino Projekt im
ATMEL Studio auch so funktionieren).

Das ist aber dann Gegenstand eines Lernprozesses den du selbst
(eigenständig) durchgehen musst.

von Kilian K. (kellermaaan)


Lesenswert?

Arduinoquäler schrieb:
> Will man wirklich den SAM3X8E so laufen lassen wie er auf dem
> Due drauf ist dann muss man noch etwas mehr tun damit Takt
> etc stimmen (aber das wird wohl mit dem Arduino Projekt im
> ATMEL Studio auch so funktionieren).

Ich habe jetzt mal versucht mit der Vorlage weiterzuarbeiten und mein 
bestehndes Projekt zu debuggen. Aber das bekomme ich einfach nicht 
hin...
Ich bekomme die Arduino Libraries nicht eingebunden, weil dann die 
"Arduino.h" etc. nicht gefunden werden.

Was müsste ich machen damit es funktioniert? Bin nämlich gerade etwas am 
verzweifeln...

von Amateur (Gast)


Lesenswert?

Früher gab's mal Schalter dafür, ob überhaupt Debug-Informationen 
eingebunden werden sollen.

von Kilian K. (kellermaaan)


Lesenswert?

Also mittlerweile bin ich etwas weiter gekommen... Allerdings habe ich 
leider doch noch paar kleine Fehler, die ich irgendwie nicht 
wegbekommen.

Wenn ich jetzt mein Projekt kompilieren möchte bekomme ich immer 
folgende Fehlermeldung:
1
conflicting declaration of C function 'char* utoa(long unsigned int, char*, int)'

Weiß jemand villeicht wie ich das behoben bekomme???

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

Kilian K. schrieb:
> Weiß jemand villeicht wie ich das behoben bekomme???

Indem du den Konflikt auflöst.

Da nur du weißt, was du wo wie hingeschrieben hast, können wir nur
raten …

Der Prototyp, der dort steht, sieht aber seltsam aus.  <stdlib.h>
hat als Prototypen:
1
char *utoa (unsigned int __val, char *__s, int __radix)

Man beachte insbesondere den Typ des ersten Parameters.

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.