Rexx - debugowanie

Debugowanie to ważna funkcja w każdym języku programowania. Pomaga programistom zdiagnozować błędy, znaleźć główną przyczynę, a następnie odpowiednio je rozwiązać. W Rexx narzędzie do śledzenia służy do debugowania. Instrukcję śledzenia można zaimplementować na 2 sposoby, jeden to tryb wsadowy, a drugi to tryb interaktywny. Spójrzmy, jak wdrożyć obie opcje.

Śledzenie w trybie wsadowym

Polecenie śledzenia służy do podania szczegółowego poziomu każdego wykonywanego polecenia Rexx.

Ogólna składnia instrukcji trace jest przedstawiona w następujący sposób -

Składnia

trace [setting]

Gdzie ustawieniem może być dowolna z następujących opcji -

  • A - Śledzi wszystkie polecenia.

  • C - Śledzi tylko polecenia hosta, które są wysyłane do systemu operacyjnego.

  • E - Śledzi tylko te polecenia hosta, które są wysyłane do systemu operacyjnego, które spowodowały błąd.

  • F - Śledzi tylko polecenia hosta, które są wysyłane do systemu operacyjnego, które spowodowały awarię.

  • I - Zapewnia to śledzenie poleceń Rexx na poziomie pośrednim.

  • L - Ta opcja jest używana, jeśli chcesz oznaczyć śledzenie tak, jak to się dzieje.

  • N - Jest to opcja domyślna, w której nie jest wykonywane śledzenie.

Spójrzmy na przykład polecenia śledzenia.

Przykład

/* Main program */ 
trace A 

/* Main program */ 
n = 100.45 if datatype( n, wholenumber ) then signal msg 

say 'This is a whole number' 
return 0 

msg : 
   say ' This is an incorrect number '

Wynik powyższego programu będzie następujący -

5 *-* n = 100.45 if datatype( n, wholenumber ) then signal msg
   7 *-* say 'This is a whole number
This is a whole number                                                   
   8 *-* return 0

Na podstawie danych wyjściowych widać, że do danych wyjściowych programu dodano dodatkowy ślad. Na wyjściu można zauważyć następujące rzeczy -

  • Numer wiersza wraz z wykonaną instrukcją jest dodawany do danych wyjściowych śledzenia.

  • Każda wykonywana linia jest wyświetlana w danych wyjściowych śledzenia.

Funkcja śledzenia

Śledzenie można również włączyć za pomocą funkcji śledzenia. Ogólna składnia i przykład są pokazane poniżej.

Składnia

trace()

Powyższa funkcja zwraca bieżący poziom śledzenia.

Parametry

Żaden

Wartość zwracana

Powyższa funkcja podaje aktualny poziom śledzenia.

Przykład

/* Main program */ 
say trace() 

/* Main program */ 
n = 100.45 if datatype( n, wholenumber ) then signal msg 

say 'This is a whole number' 
return 0 
msg : 

say 'This is an incorrect number '

Wynik powyższego programu będzie następujący.

N 
This is an incorrect number

Pierwsza linia N oznacza, że ​​ślad jest ustawiony na Normalny.

Ustawianie wartości śledzenia

Poziom śledzenia można ustawić za pomocą funkcji śledzenia. Ogólna składnia i przykład są pokazane poniżej.

Składnia

trace(travel_level)

Parametry

  • trace_level - Jest to podobne do opcji dostępnych przy ustawianiu poziomu śledzenia.

Wartość zwracana

Powyższa funkcja podaje aktualny poziom śledzenia.

Przykład

/* Main program */ 
say trace() 
current_trace = trace('A') 
say current_trace 

/* Main program */ 
n = 100.45 if datatype( n, wholenumber ) then 
signal msg say 'This is a whole number' 
return 0 
msg : 
say ' This is an incorrect number '

Wynik powyższego programu będzie następujący -

N 
   4 *-* say current_trace 
N 
   6 *-* n = 100.45 
   7 *-* if \ datatype( n, wholenumber ) then 
   8 *-* signal msg 
   12 *-* say 'This is an incorrect number' 
'This is an incorrect number'

Interaktywne śledzenie

Śledzenie interaktywne polega na tym, że śledzenie jest wykonywane w trakcie działania programu. Podobnie jak w środowisku IDE, takim jak Visual Studio for .Net, w którym można dodawać punkty przerwania i zobaczyć, jak wykonuje się każda instrukcja, podobnie tutaj również można zobaczyć program podczas wykonywania każdej linii kodu.

Ogólna składnia jest następująca -

Składnia

trace ?options

Gdzie opcje są takie same dla polecenia śledzenia, jak pokazano poniżej.

  • A - Śledzi wszystkie polecenia

  • C - Śledzi tylko polecenia hosta, które są wysyłane do systemu operacyjnego.

  • E - Śledzi tylko te polecenia hosta, które są wysyłane do systemu operacyjnego, które spowodowały błąd.

  • F - Śledzi tylko polecenia hosta, które są wysyłane do systemu operacyjnego, które spowodowały awarię.

  • I - Zapewnia to śledzenie poleceń Rexx na poziomie pośrednim.

  • L - Ta opcja jest używana, jeśli chcesz oznaczyć śledzenie tak, jak to się dzieje.

  • N - Jest to opcja domyślna, w której nie jest wykonywane śledzenie.

Spójrzmy na przykład implementacji aktywnego śledzenia.

Przykład

/* Main program */ 
trace ?A

/* Main program */ 
n = 100.45 if datatype( n, wholenumber ) then 
signal msg 

say 'This is a whole number' 
return 0 
msg : say 'This is an incorrect number'

Wynik powyższego programu będzie taki, jak pokazano w poniższym programie. Śledzenie zatrzyma się na każdym wierszu kodu; następnie musisz nacisnąć przycisk Enter, aby przejść do następnej linii kodu.

This is an incorrect number
       +++ "LINUX COMMAND /home/cg/root/5798511/main.rex"
     5 *-* n = 100.45 if datatype( n, wholenumber ) then 
+++ Interactive trace. "Trace Off" to end debug, ENTER to Continue. +++
     6 *-* signal msg 
    10 *-* msg :
    10 *-* say 'This is an incorrect number'