Linker-Problem

Gast #1195129
Lesenswert?

Hallo!

Programmiere gerade mit dem Pollin-Evalboard einen ATMEGA168-20PU.
Dazu nutze ich das AVRStudio4 und Ponyprog.

Auf der Suche nach fehlern habe ich mein Programm gerade im AVRStudio 
simuliert.

Dabei ist mir aufgefallen das im Disassembler der Programmcode sehr 
komisch angeordnet war.

So sind gewisse Zeilen die nur bedingt ausgeführt werden zwischen 
Initialisierungsbefehle gerutscht.

Wie kommt sowas? Wie kann man es abstellen?

Außerdem wird an einer Stelle durch das Verwenden der strcat()-Funktion 
aus der String.h eine unbeteiligte Variable manipuliert.

Wie kommt sowas? Wie kann man es abstelle`n?


Vielen Dank schonmal.

ciao
Mathias
Gast #1195153
Lesenswert?

>Wie kommt sowas? Wie kann man es abstellen?

Optimierung eingschaltet?

>Außerdem wird an einer Stelle durch das Verwenden der strcat()-Funktion
>aus der String.h eine unbeteiligte Variable manipuliert.

Buffer zu klein bzw. fehlende Null am Ende des/der Strings.

Oliver
Gast #1195182
Lesenswert?

Die Optimierung ist an.
Mir ist auch gerade aufgefallen das der Code zu dem der Simulator 
springt anscheinend garnicht ausgeführt wird.
Seltsam finde ich es allerdings trotzdem.

Der Fehler mit der stringfunktion ist behoben. Es war der buffer.
#1195207
Lesenswert?

Mathias wrote:
> Die Optimierung ist an.
> Mir ist auch gerade aufgefallen das der Code zu dem der Simulator
> springt anscheinend garnicht ausgeführt wird.
> Seltsam finde ich es allerdings trotzdem.

Nicht wirklich :-)
Wenn der Optimierung ganz Arbeit geleistet hat, dann gibt es keine 1:1 
Entsprechung mehr vom Maschinencode mit dem von dir geschriebenen 
C-Programm. Du darfst daher die Anzeige, die der Debugger aus dem C-Code 
ableitet nicht mehr für 100% bare Münze nehmen.

> Der Fehler mit der stringfunktion ist behoben. Es war der buffer.

Wie praktisch immer :-)

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