07 REXX Debuggen / Logging

Die wohl wichtigste Funktion in der Softwareentwicklung ist das Debuggen bzw. Logging von Daten. Zum einen um zu während der Tests zu sehen, welchen Inhalt Variablen haben zum anderen nachher in Produktion um Fehlerinformationen herauszuschreiben.

In REXX können wir dieses über den Befehl

trace [option]

realisieren.

Über den angegebene Option kann man die Traceausgabe steuern.
Die Optionen sind

OptionBeschreibung
ATracen von allen Kommandos
Cdie Host-Befehle, die an das Betriebssystem gesendet werden,
Edie Host-Befehle, die an das Betriebssystem gesendet werden, die zu einem Fehler geführt haben (Level Error)
Fwie E aber bei Rückmeldungen des Level Failure
Izeigt sowohl die Aussage als auch die Ergebnisse an
LTraced Label im Edit Makro
NNormal , keine Tracen
OTrace ausschalten
RAusgabe aller Klauseln und Ausdrücke (Normalerweise die Standard Option)
SScannt jede Anweisung und zeigt sie an, ohne sie zu verarbeiten

Das Tracen kann man auf zwei Arten aktivieren. Zu einem in Batchmode und einmal in einem Online Mode.

Beispiel für Batchmode :

/*REXX*/
trace r
n = 4711
say "Test"
return 1

Als Ausgabe über Regina REXX erhalten wir:

3 *-* >=>   "4711"
4 *-* Test
5 *-*

 

Beispiel für Onlinemode:

/*REXX*/
say trace()
gesetzter_trace_neu=trace('R')
say gesetzer_trace_neu
n=4711
say "Hello"

 

Ausgabe :

N
       >=>   "N"
     4 *-*
       >L>   "GESETZER_TRACE_NEU"
GESETZER_TRACE_NEU
     5 *-*
       >=>   "4711"
     6 *-*
Hello

 

Die Ausgabe besteht in beiden Fällen im Trace Modus aus der Angabe der Zeilennummer , Symbol und Inhalt / Text zusammen.

Bedeutung der Symbole:

SymbolBeschreibung
*-*Gibt die Quelle einer einzelnen Klausel an, dh die Daten, die sich tatsächlich im Programm befinden
+++Identifiziert eine Ablaufverfolgungsnachricht.
>>>Identifiziert das Ergebnis eines Ausdrucks (für TRACE R) oder den Wert, der einer Variablen beim Parsen zugewiesen wurde, oder den Wert, der von einem Unterroutinenaufruf zurückgegeben wird.
>>Identifiziert den Wert, der einem Platzhalter beim Parsen zugewiesen wurde (siehe Der Zeitraum als Platzhalter).
> C>Die verfolgten Daten sind der Name einer zusammengesetzten Variablen, die nach der Substitution und vor der Verwendung zurückverfolgt wird, vorausgesetzt, der Name enthält den Wert einer Variablen.
> F>Die verfolgten Daten sind das Ergebnis eines Funktionsaufrufs.
> L>Die verfolgten Daten sind ein Literal (Zeichenfolge, nicht initialisierte Variable oder Konstantensymbol).
> O>Die aufgezeichneten Daten sind das Ergebnis einer Operation mit zwei Begriffen.
> P>
Die verfolgten Daten sind das Ergebnis einer Präfix-Operation
> V>Die verfolgten Daten sind der Inhalt einer Variablen