Forum: Compiler & IDEs Irgendwehr oder Irgenwas macht meine Daten kaputt


von keinen Plan (Gast)


Lesenswert?

Hallo,
ich habe ein Problem ich habe ein Programm geschrieben für einen 
mega168, und habe jetzt große Schwierigkeiten einen Fehler zu fixen.
Ich habe meiner Meinung noch etwas an Ressourcen frei!
Program Memory Usage   :  9842 bytes   60,1 % Full
Data Memory Usage   :  852 bytes   83,2 % Full
EEPROM Memory Usage   :  10 bytes   2,0 % Full

Was mein Ihr zur Speicherbelegung?
Ich versuche denn Fehler zu erklären.
Alles hat angefangen das ab und zu Bits in meinem Ausgangs Byte gesetzt 
wurden ohne das ich es wollte.
Jetzt wird das Array mit den Daten meines Display das ich mit 60 Byte 
großzügig gewählt habe (es werden eigentlich nur 49 Byte benötigt) bis 
zum letzten Byte beschrieben.
Irgendwie deutet alles auf einen Zeiger hin aber ich finde keinen 
Übeltäter.
Wie kann ich so einen Fehler schnellstmöglich finden.
Kann man auch Breackpoints auf Schreibzugriffe auf einen Gewisse Adresse 
anlegen?
Wie würdet ihr vor gehen?

Vielen Dank schon mal
Daniel

von Magnus M. (magnetus) Benutzerseite


Lesenswert?

keinen Plan schrieb:
> Data Memory Usage   :  852 bytes   83,2 % Full

Im Ram befindet sich auch der Stack, und dieser muss mit den 
verbleibenden 16,8% (172 Bytes) auskommen.

von g457 (Gast)


Lesenswert?

> Data Memory Usage   :  852 bytes   83,2 % Full

Mit der Restlichen Beschreibung ein klassischer Fall von 
Speicherüberlauf.

von keinen Plan (Gast)


Lesenswert?

Ist das zu Knapp?
Könnte das schon mein Problem verursachen?

Danke
Daniel

von Magnus M. (magnetus) Benutzerseite


Lesenswert?

keinen Plan schrieb:
> Ist das zu Knapp?

In deinem Fall: Ja.

> Könnte das schon mein Problem verursachen?

Ja.

von keinen Plan (Gast)


Lesenswert?

Magnus M. schrieb:
> In deinem Fall: Ja.

Für wenn nicht?

Vielen Dank

Daniel

von g457 (Gast)


Lesenswert?

>> In deinem Fall: Ja.
>
> Für wenn nicht?

Für jemanden der auf den zur Laufzeit verbrauchten Speicher achtet.

von keinen Plan (Gast)


Lesenswert?

g457 schrieb:
> Für jemanden der auf den zur Laufzeit verbrauchten Speicher achtet.

Und wie macht man das??

Lg
Daniel

von Dr. Sommer (Gast)


Lesenswert?

In den Quelltext schauen, wie große Variablen die Funktionen anlegen, 
wie weit sich das aufaddiert durch verschachtelte Aufrufe, und für jeden 
Aufruf noch die 2 Bytes Rücksprungadresse aufaddieren.

von Timmo H. (masterfx)


Lesenswert?

keinen Plan schrieb:
> g457 schrieb:
>> Für jemanden der auf den zur Laufzeit verbrauchten Speicher achtet.
>
> Und wie macht man das??
Benedikt hat man ein Programm geschrieben. Geht aber nur zuverlässig 
wenn du nicht mit Funktionspointern arbeitest: 
Beitrag "StackViewer (RAM Rechner) für WinAVR"

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.