Zur Übersicht - INFO - Neueste 50 Beiträge - Neuer Beitrag - Suchen - FAQ - Zum CC1-Forum - Zum CC-Pro-Forum

Re: Compilerfehler? (was: Abnormales Programmende) Kategorie: Programmierung (von André H. - 15.11.2002 12:08)
Als Antwort auf Compilerfehler? (was: Abnormales Programmende) von Joerg Pohl - 10.11.2002 15:16

Hallo Jörg,

> es wird immer verrückter. Kann es sein, dass der Compiler unter bestimmten Umständen fehlerhaften
> Code produziert?
Eindeutig Jein. :-)

> Zur Fehlersuche im weiter oben erwähnten Programm habe ich aus einer Schleife
> do
> { ...
> } while (iReturn > 2);
>
> eine Endlosschleife gemacht:
> do
> { ...
> } while 1;
>
> Das restliche Programm blieb unverändert. Jedoch scheint bei der Abarbeitung der Schleifenteil nicht
> oder nur teilweise ausgeführt zu werden, der Rücksprung (while) erfolgt dann irgendwohin in den vorderen
> Programmteil (durch Ausschriften zu erkennen).
>
> Ã?ndere ich jetzt die Endlosschleife nach
> loop
> { ...
> }
> bei sonst gleichem Programm, funktioniert alles wie es soll.
>
> Ich habe jetzt mal die GröÃ?en der VMC-Files verglichen (Angaben aus Zeile 3 der VMC-Files):
>
> do { ... } while (iReturn > 2)     :  1184 bytes
> do { ... } while 1                     :  1120 bytes
> loop { ... }                              :  1168 bytes
>
> Was ich nicht verstehe, dass die do {...} while 1 Variante deutlich kürzer ist, als die Endlosschleife mit
> loop  {...} , die ja sicherlich nur aus einem Rücksprung zu einer Adresse besteht.
> Naja, zumindest deckt sich das ganze mit dem Fehlerbild bei der Abarbeitung.
>

while 1 ist kein gültiger Term. Bei while muÃ? immer eine Variabel
angegeben werden. Da gibt's sonst Fehler und deshalb ist der
VMC-code dann auch kürzer.
Mit while 1==1 sollte es aber funzen.

> Eine mögliche Erklärung wäre, dass der Compiler hier wirklich Mist baut.
> BTW, dll-Version 21.12.2000.
>
> Ich habe mal versucht, die vmc-files zu vergleichen, aber die sind ziemlich unterschiedlich und ohne genauere Kenntnis der VM wahrscheinlich nicht vergleichbar.
>

Mach mal folgendes:
Baue Debugging-Informationen ein, die aufs externe LCD ausgegeben werden,
damit Du genau weiÃ?t, wo im Programm es zu Fehlern kommt.
Anhand der Information muÃ?t Du erkennen können, welche Anweisung
zuletzt ausgeführt wurde.
Gehe am besten so vor, dmit Du nicht in jeder Zeile eine Zeile für Debugging
einbauen muÃ?t:
Setze erst vereinzelt, an den wichtigsten Stellen, eine Ausgabe der Aktuellen
Programm-Position.
Wenn der Bereich eingegrenzt ist, erstelle in diesem in jeder Zeile eine Ausgabe
der aktuellen Information.

MfG André H.
 


Antworten bitte nur ins Forum!
Fragen per EMail auf Forum-Postings werden nicht beantwortet!

Das macht meine Heizung gerade


    Antwort schreiben


Antworten:

Re: Compilerfehler? (was: Abnormales Programmende) (von Joerg Pohl - 16.11.2002 10:15)
    Re: Compilerfehler? (was: Abnormales Programmende) (von André H. - 16.11.2002 11:47)