Atmel Studio beim debuggen Value = Unknwon identifier

#4805659
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
#4812854
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.
Angehängte Dateien:
Gast #4812885
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.
Moderator Persönliche Seite #4812887
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.
Gast #4812909
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?)
#4812936
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??
Gast #4812944
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.
Gast #4813039
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) .....
Angehängte Dateien:
#4813070
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!!
Gast #4813086
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.
#4814239
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...
#4821370
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???
Moderator Persönliche Seite #4822744
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.

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