Overflow bei Berechnung - wie finden?

OP #2469585
Lesenswert?
• ▲
▼
Liebe Kollegen,

ich vermute, dass ich in meinem C-Programm für ATMEGA1284P einen 
Overflow bei einer Berechnung habe. Ich habe nämlich in dem Programm 
drei lange int16 Arrays erstellt (3 * 1024) und mit 0 gefüllt. An einer 
anderen Stelle des Programms werden die Nullen testweise aufs Terminal 
ausgegeben und and drei hintereinander liegenden Stellen sind in einem 
der Arrays irgendwelche Zahlen drinn. Auf diese Arrays wird bis auf die 
Initialisierung sonst nirgendwo schreibend zugegriffen.

Vermute ich es richtig, dass ich irgendwo im Programm einen Fehler habe, 
z.B. bei einer Berechnung, wo eine Variable überläuft, und es werden mir 
die Inhalte des Arrays überschrieben?

Wie sucht man den Fehler :-)?

Nutze Eclipse mit WinAVR (gcc).

Vielen Dank
Karel
Gast #2469594
Lesenswert?
• ▲
▼
Erstens mal das Programm posten und zweitens, kann man jede berechnung 
die man im Code hat mal von Hand durchführen und zwar genau so wie es 
der Controller auch macht. Dann sieht man auch schnell was für zahlen 
dabei raus kommt und ob sie über den Datentyp drüber hinaus gehen
(Firma: keine) #2469597
Lesenswert?
• ▲
▼
Also ausgehend von deinem angehängten Quellcode würde ich sagen: 
vielleicht.

Allerdings hört sich die Beschreibung etwas spanisch an, denn wenn auf 
die Variablen nur lesend zugegriffen wird, wie soll dann etwas 
überlaufen? Eher würde ich dann noch vermuten dass du irgendwo 
fehlerhaft mit Pointern o.ä. arbeitest und aus Versehen einen 
Speicherbereich manipulierst der eigentlich nicht angefasst werden soll.

Ansonsten:
Quellcode schrittweise durchdebuggen.
Gast #2469616
Lesenswert?
• ▲
▼
Karel Marsalek schrieb:
> Wie sucht man den Fehler :-)?

Man setzt im Debugger einen Breakpoint beim Schreibzugriff auf die 
entsprechende Variable oder den Variablenbereich.

Ich würde erst mal schauen ob der richtige Prozessor beim Compiler 
eingestellt ist und schauen ob der Stackpointer entsprechend 
initialisiert ist.

Gruß Anja

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 14 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.