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'