> Projekt: Software-Sanierung > Entwicklerdokumentation > Tabelle zu den Entwicklerdokumenten > Ablaufsreuerung > Fehler

Ablaufsteuerung

Fehler

 

Autoren: Gruppen projekt98 und projekt99

==>   in Bearbeitung   <name>  <datum>



Erkannte und evtl. korrigierte Fehler in den Quellfiles durch die Entwickler

(Jeder erkannte Fehler in den Quellfiles ist hier zu dokumentieren. Ist darüber hinaus eine 'problemlose' Fehlerbehebung möglich (ohne Seiteneffekte, ...), so kann diese am Quelltext vorgenommen werden. Sie ist dort kenntlich zu machen und außerdem hier als vorgenommene Korrektur zu erwähnen.)

Statusarten:

jeder dieser Stati sollte mit Datum und User-kennung in der Liste auftauchen.
Die Spalte Beschreibung kann die Abschnitte: Charakterisierung, Ursache und Behebung beinhalten.
  !
Nr. Datum Status Wer? Beschreibung
1 15.9.2000 1st
FIX
gollnick
kullmann,
reinecke
Charakterisierung:
In der Steering Funktion StartTimer kommt es zum Setzen der Zustandsvariable bTimerActive auf TRUE, auch wenn die Timerinitialisierung misslingt, da zuerst die Variable gesetzt wird und dann die Initialisierung erfolgt.
Behebung:
bTimerActive wurde auskommentiert, ein aktiver Time kann mit nEvent!=0 ermittelt werden.
2 18.07.2002
09.08.2002
1ST
FIX
hanisch
hanisch
Charakterisierung:
Kein Unterschied bei Auswahl von Option "Ausführlicher Report"
Ursache:
Variable bSendReport wird vor Ausführung eines Makros unabhängig vom Zustand der Checkbox immer auf TRUE gesetzt
Behebung:
Steering.Visualising(TRUE, TRUE)
ersetzt durch
Steering.Visualising(Steering.IsResponding(), TRUE)
3 08.08.2002
21.10.2002
1ST
FIX
hanisch
hanisch
Charakterisierung:
Das Makro-Kommando wird direkt aufgerufen aus der Funktion TTopographyExecute::Dlg_OnCommand(). Dabei wird das Objekt der Klasse dynamisch erzeugt. (TheCmd=(TControlFlankCmd*) new TControlFlankCmd(Cmd);). Das zuletzt ausgeführte Kommando-Objekt wird beim Programmende nicht gelöscht.
Ursache:
Löschen der Kommando-Objekte geschieht immer nur vor der Erzeugung eines neuen Kommando-Objekts.
Behebung:
Löschen des Kommando-Objekts im Destruktor von TSteering. Diesen Destruktor gibt es nicht ! Einfügen eines Destruktors für die Klasse TSteering:

TSteering::~TSteering(void) {
   if (TheCmd) delete (TheCmd);
}
4 28.07.2002 1ST
FIX
kullmann,
reinecke
Charakterisierung:
Zahlreiche Member vom TSteering werden nicht initialisiert. Ein Teil der Member wird bei einigen Kommandos nur geschrieben und in anderen nur gelesen. Wenn man ein lesendes Kommando vor einem schreibenden aufruft, werden uninitialisierte Werte verwendet, die nichtdeterministisches Verhalten zur Folge haben.
Behebung:
Im Konstruktor erfolgt nun die Initialisierung mit 0.
5 12.11.2001 1ST
FIX
kullmann,
reinecke
Charakterisierung:
U.U. schlägt das Laden von Makros fehl.
Behebung:
LoadMacro benutzt nun das Verzeichnis aus dem die DEVELOP.EXE gestartet wurde, statt dem aktuellen Verzeichnis.
6 04.06.2002 1ST
FIX
kullmann,
reinecke
Charakterisierung:
* Das Laden von Makros im Unix-Textdateienformat schlägt fehl.
* Nicht in jedem Fall wird das Dateihandle wieder freigeben.
Behebung:
LoadMacro verwendet nun die Klasse TTxtRead zum Lesen der mak-Dateien. Sonstige Fehler wurden auch behoben.
7 12.01.2003 1ST
FIX
kullmann,
reinecke
Charakterisierung:
Beim Aufruf von TSteering.Reset() stützt das Programm ab.
Behebung:
Die notwendigen Initialisierungen und Freigabe von Speicherplatz wurden aus ToggleInterrupt() übernommen.
8 12.01.2003 1ST
FIX
kullmann,
reinecke
Charakterisierung:
Methode GetMacroByNumber kann uninitialisierte Werte außerhalb von aMacroList zurückgegeben.
Behebung:
Die Methode gibt nun ggf. NULL zurück.
9 12.01.2003 1ST
FIX
kullmann,
reinecke
Behebung:
*
Methode DeleteMacro löscht nun wirklich das gesuchte Makro, das war vorher (in mehrfacher Weise) nicht der Fall.
* Absturzursache beseitigt, wenn das zu löschende Makro nicht vorhanden war.
10 12.01.2003 1ST
FIX
kullmann,
reinecke
Charakterisierung:
Das Kommando SetupAreaScan wird beim Parsen der mak-Datei akzeptiert, aber nirgends implementiert. Wenn man es verwendet, tritt ein Fehler auf.
Behebung:
Auskommentiert, so dass es beim Parsen nicht mehr akzeptiert wird.
11 12.01.2003 1ST
FIX
kullmann,
reinecke
Charakterisierung:
Die Anweisungen friend RecallSteering, friend FrameWndProc und friend TMacroExecute sind sinnlose Friend-Relationen.
Behebung:
auskommentiert
12 12.01.2003 1ST
FIX
kullmann,
reinecke
Charakterisierung:
Die Makroverarbeitung ist sehr stark mit dem Hauptfenster verknüpft und auch der Timer, der die Verarbeitung der Kommandos im Hintergrund ermöglicht, arbeiten nur auf demSteering-Objekt. Es muss sichergestellt werden, dass der Benutzer kein eigenes Objekt erstellen kann. Die Kopienbildung beim Initialisieren des Steering-Objekts sollte vermieden werden.
Behebung:
Copykonstruktor und Zuweisungsoperator sind nun private. Der Standardkonstruktor kann nicht private sein, weil das Steering-Objekt sonst nicht erstellt werden kann. Kopienbildung auskommentiert.
13 12.01.2003 1ST
FIX
kullmann,
reinecke
Charakterisierung:
Für bestimmte Parameter bei den Methoden Visualising und StartMacroExecution ist der Wertebereich BOOL ausreichend, dadurch wird der Benutzer nicht verleitet durch unsinnige Werte Fehler zu verursachen.
Behebung:
korrigiert
14 12.01.2003 1ST
FIX
kullmann,
reinecke
Charakterisierung:
Die Methoden ParsingMacroId und ParsingCmd geraten durch das methodenumschließende while(1) in eine Endlosschleife, wenn die zu parsende Bezeichnung nicht gefunden wird.
Behebung:
entfernt
15 12.01.2003 1ST
FIX
kullmann,
reinecke
Charakterisierung:
TCmd::eStep wird nicht initialisiert, das hätte beim leer implementierten (TInquireCmd) oder neuen Kommandos zur Endlosschleife führen können.
Behebung:
im Konstruktor initialisiert
16 12.01.2003 WIS
FIX
kullmann,
reinecke
Charakterisierung:
Es wäre wünschenswert den Fortschritt der Makroverarbeitung, abhängig vom Symbol GermanVersion, entweder in deutsch oder englisch auszugeben.
Behebung:
korrigiert und Testskripte angepasst
17 12.01.2003 1ST
FIX
kullmann,
reinecke
Charakterisierung:
Wenn der gewünschte Detektor bei TChooseDetectorCmd nicht ausgewählt werden konnte, werden die Parameter des falschen (zuvor gewählten) Detektors geändert.
Behebung:
nun wird sofort ein Fehlercode zurückgegeben, der das Scheitern des Kommandos kennzeichnet
18 24.06.2003 1ST;
FIX
sacklows;
kullmann,
reinecke
Charakterisierung:
Der TScanCmd-Konstruktor stürzte bei bestimmten HARDWARE.INI-Einstellungen ab, dies geschah grundlos und ohne Warnung an den Nutzer.
Behebung:
Die Berechnung wurde (unter Berücksichtigung von "Division durch 0") geändert. Die Umwandlung nach int musste per Zeichenkette erfolgen. Zur Anzeige, dass der Scan begonnen hat (der Fehler nicht aufgetreten ist), wird nun die Meldung 'Startposition ist erreicht' ausgegeben.
19 24.09.2000 1ST gollnick Charakterisierung:
In der Klasse TGotoPeakCmd greift die Funktion ControlStep auf den Feldwert fIntensity[2] zu, um den Intensitätsunterschied der vorherigen Messung zu bestimmen ( idif1 ). Beim ersten Aufruf von ControlStep ist fIntensity[2] jedoch unbestimmt. Es wird zwar am Anfang der Funktion eine Verschiebung aller Feldwerte um eine Position vorgenommen, die auch fIntensity[2] einen Wert zuweist, aber dieser Wert stammt von fIntensity[1]. Vor der Verschiebung ist fIntensity[1] ebenfalls unbestimmt, da im bisherigen Programmverlauf nur fIntensity[0] ein Wert zugewiesen wurde. Somit wird fIntensity[2] mit einem unbestimmten Wert belegt.
Behebung:
Entweder muss fIntensity[2] zuvor ein sinnvoller Wert zugewiesen werden oder, der Zugriff auf fIntensity[2] muss für den ersten Aufruf von ControlStep unterbunden werden.
20 12.01.2003 1ST kullmann,
reinecke
Charakterisierung:
* TGotoPeakCmd::bBackMoveActive wird nicht initialisiert, damit könnte die falsche Antriebsposition angefahren werden
* TGotoPeakCmd::fSearchIntensity wird nie beschrieben, nur gelesen:
-> Fehler beim Zugriff in Methode TGotoPeakCmd::ReadyStep
21 12.01.2003 1ST kullmann,
reinecke
Charakterisierung:
*
TSteering::fStartIntensity wird nicht initialisiert aber bei TTopograhyExecute::Dlg_OnCommand gelesen
* TSteering::bInquireResult wird nicht initialisiert aber bei TSteering::ExecuteNextCmd gelesen
22 12.01.2003 1ST kullmann,
reinecke
Charakterisierung:
Für Methode TGotoIntensityCmd::ControlStep sind in der Designbeschreibung zwei potentielle Fehlerquellen gekennzeichnet.
23 04.04.2003 AEN
FIX
kullmann,
reinecke
Charakterisierung:
Das globale Objekt Steering (Datei M_STEERG.CPP) wurde durch den Copy-Konstruktor aus einer temporären Kopie erstellt.
Behebung:
Mit private des Copy-Konstruktors und Zuweisungsoperators fiel dieser Fehler auf. Das Kopienkonstrukt wurde entfernt. Das Subsystem Ablaufsteuerung ist sehr sensibel, weil es nur mit DEM Steering-Objekt arbeiten darf.
Nr 19.06.2000 
20.06.2000
1ST 
FIX
sacklows
sacklows
Charakterisierung: ....................................................
Behebung: ...

. Projekt: Software-Sanierung
erstellt am 15.09.02 (Sacklowski)
geändert am 12.01.03 (Kullmann/ Reinecker)