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) |