Herunterladen Inhalt Inhalt Diese Seite drucken

Debuggereinsatz Zur Fehlersuche - Siemens RMOS3 Bedienungsanleitung

Echtzeit-betriebssystem rmos3 rmos3 v3.50 benutzerhandbuch
Inhaltsverzeichnis

Werbung

Den Fehler identifizieren
Wenn Sie nun im Quellcode die Zeile mit dem
feststellen, dass folgende Zeile tatsächlich fehlerhaft ist:
Status = RmCreateFlagGrp("THIS_IS_THE_SECOND_FLAG", &FlagId);
Die Zeichenkette überschreitet die zulässige Länge von 16 Bytes, was die Exception
auslöste. Die Zeile muss also korrigiert werden in:
Status = RmCreateFlagGrp("SECOND_FLAG", &FlagId);
Sie müssen jetzt die Ursache dieses Fehlers im Quellcode beseitigen und neu übersetzen.
Starten Sie die Task dann erneut, wie oben beschrieben. Die Task läuft jetzt ohne diese
Fehlermeldung und wartet jetzt auf das Setzen des Flags (SECOND_FLAG).
Wechseln Sie zu einer anderen RMOS3-Konsole, starten Sie den Debugger und setzen Sie
mit
>svc rmsetflag <Task-ID> 1 <Return>
das Flag.

Debuggereinsatz zur Fehlersuche

Wenn Sie nun zur CLI-Session zurückkehren, werden Sie die Schlussmeldung vergebens
suchen. Die Task ist nicht bis zur Ausgabe der Meldung gelaufen. Um festzustellen, warum
dies so ist, kehren Sie wieder zum Debugger zurück und lassen sich mit dem Kommando
>dir <Return>
die Katalog-Einträge anzeigen. Die S_TASK wurde als CLI_JOB_1 gestartet. Notieren Sie
sich die Task-ID und lassen Sie sich mit
>rep task <Return>
die Task-Auswertung anzeigen. Für die S_TASK (CLI_JOB_1) ist als Zustand
vermerkt, also wartet die S_TASK noch immer auf ein Ereignisflag. Mit
>rep flag lo <Return>
bekommen Sie den Flag-Report in ausführlicher Form (long) angezeigt. Für die von der
S_TASK gemeldete Flaggruppe meldet der Report, dass Flag 1 gesetzt ist und dass eine
Task (S_TASK) mit Priorität 40 an der Flaggruppe wartet. Die Testmaske der Flags ist 3
(binär 0011) und der Typ der Verknüpfung ist UND. Das bedeutet, dass die Task wartet, bis
beide Flags, also Flag 1 und 2 gesetzt sind. Dies sollte ja auch geschehen, weshalb in der
entsprechenden Quellcodezeile der Aufrufparameter RM_TEST_ONE des SVC
RM_TEST_ALL geändert und zusätzlich FLAG2 definiert wurde. Der Fehler liegt also in der
Debuggerbedienung. Damit die Task weiterläuft, müssen beide Flags mit dem Debugger
gesetzt werden:
>svc rmsetflag <Flag-ID> 3 <Return>
RMOS3 V3.50 Benutzerhandbuch
Bedienhandbuch, 07/2012, A5E03692290-01
Praxisteil: Testen einer RMOS3-Task
7.3 Debuggen mit dem RMOS3-Debugger
prüfen, werden Sie
RmCreateFlagGrp
event flag
in
RmGetFlag
65

Werbung

Inhaltsverzeichnis
loading

Inhaltsverzeichnis