Zmiany

Przejdź do nawigacji Przejdź do wyszukiwania

CSL-CROOK - Śledzenie programów binarnych

Dodane 5127 bajtów, 14:29, 31 sie 2013
Utworzono nową stronę "__NOTOC__ Do każdego programu dołączane są podprogramy śledzące i monitorujące. Dołączanie tych programów jest sterowane odpowiednimi opcjami (opcje '''?TRA'''..."
__NOTOC__
Do każdego programu dołączane są podprogramy śledzące i monitorujące. Dołączanie tych programów jest sterowane odpowiednimi opcjami (opcje '''?TRA''', '''?ARR'''). Podprogramy śledzące wykonują testy podczas przebiegu programu i w przypadku wykrycia błędu wyprowadzane są odpowiednie komunikaty. Korzyści ze śledzenia otrzymuje się kosztem zwiększonego czasu przebiegu programu i zwiększonej pamięci operacyjnej. Wielkość o jaką zostaną zwiększone te dwa elementy (czas i pamięć) określona jest przez wybrany poziom śledzenia. Im wyższy jest poziom śledzenia, tym większy czas przebiegu programu i większy obszar pamięci zajętej przez program.

Uruchomienie programu z opcją '''TRA[CE]''' jest następujące:

: <tt>[ASS,<strumień>,<TZ> [,<liczba sektorów>] <nazwa programu> [,<poziom śledzenia>] [,<strumień>]</tt>

* Nazwa programu - jest nazwą binarnego programu uruchamianego przez użytkownika;
* Poziom śledzenia - należy podać liczbę od 0-3 określającą wybrany poziom śledzenia programu;
* Strumień - jest nazwą strumienia przywiązanego zleceniem '''ASS''' do zbioru, do którego ma być generowany kod śledzenia programu;

Określone wyżej parametry są opcjonalne. Jeżeli w programie jest zapalona opcja TRACE dyrektywą '''#OPT''', natomiast w trakcie uruchamiania programu nie pojawią się parametry to nie będzie generowany kod śledzenia. I odwrotnie, jeżeli pojawią się parametry w trakcie uruchamiania programu a nie została użyta wcześniej dyrektywa '''#OPT''' w programie to również kod śledzenia nie będzie generowany.

Przykłady:

CRF, WYNTRA,100
ASS,1, WYNTRA
BINPRG,3,1

CRF TRACE ASS,10, TRAFIL,100
ASS XYZ TRACE BIN,3,10
BINPRG,2, XYZ

BINPRG,3

Wyróżniamy następujące poziomy śledzenia:

== Poziom 0 ==

Programy uruchamiane z poziomem śledzenia zero (0) zajmują mniejszy obszar pamięci i krótszy jest czas obliczeń od analogicznego programu uruchomionego z wyższym poziomem śledzenia (1,2,3). W przypadku wykrycia błędu wyprowadzany będzie tylko komunikat z numerem błędu oraz dodatkowo z numerem linii fortranowskiej, w której wystąpił błąd. Numer ten odpowiada odpowiedniemu numerowi linii na listingu programu, wykonanego w czasie kompilacji.

Wyprowadzany komunikat ma następującą postać:

#EXECUTION ERROR <nr błędu> AT LINE <nr linii>

Przykład:

#FORTRAN
0 _ MASTER
1 _ I=1 #1
2 _ J=0 #2
3 _ K=I/J #3
4 _ L=0 #EXECUTION ERROR FI 2 AT LINE 3
5 _ STOP #STOP 0
7 _ END '
#END

== Poziom 1 ==

Generowane są nazwy podprogramów i łańcuchy '''RETURN''' wyjść z podprogramów, które są wywoływane w trakcie realizacji programu;

Przykład:

@PROC1
@RETURN

Podane nazwy poprzedzone znakiem "@" odpowiadają nazwom odpowiednim podprogramom śledzonym;

== Poziom 2 ==

Generowane są wszystkie informacje jak w poziomie 1 i dodatkowo podawane są wszystkie etykiety znajdujące się na drodze działającego programu;

Przykład:

@PROC1
@100
@200
@10
@RETURN

Podane liczby poprzedzone znakiem "@", odpowiadają dokładnie odpowiednim etykietom napotkanym na drodze śledzenia procedury fortranowskiej;

== Poziom 3 ==

Generowane są wszystkie informacje zawarte w poziomie 2 i dodatkowo numery rekordów fortranowskich programu źródłowego. Cyfry generowane w kodzie śledzenia odpowiadają numerom instrukcji (w poszczególnych segmentach) na listingu w czasię kompilacji Fortranem;

Przykład:

@PROC1
@100
#2
#3
@200
#5
@10
@RETURN

Podane cyfry, poprzedzone znakiem "#" odpowiadają dokładnie numerom instrukcji fortranowskich. Numery te są zgodne z numerami instrukcji z listingu w czasie kompilacji Fortranem (zapalona opcja '''?LIS''');

Istnieje możliwość śledzenia poszczególnych (wybranych przez użytkownika) segmentów programu. Służy do tego dyrektywa '''#OPT'''. Niżej pokazano to na przykładzie.

Przykład:

#OPT(NTRA)
#FORTRAN
MASTER
.....
END
#OPT(TRA)
SUBROUTINE TEST
.....
RETURN
END
#OPT(NTRA)
FUNCTION BETA (X, I)
.....
END
#END

W czasie uruchamiania programu ze śledzeniem lub bez śledzenia (poziom śledzenia 0) istnieje możliwość zmiany poziomów śledzenia. Można tego dokonać w trakcie liczenia programu. Należy wtedy wykonać następującą sekwencję zleceń języka operatora:

* po uruchomieniu programu, wykonać przerwanie operatorskie z monitora OPRQ.
* jeżeli pojawi się komunikat: <pre><nazwa programu> STOPPED <liczba></pre> wykonać zlecenia:
: <tt>ST,<nazwa programu>,1,<poziom śledzenia></tt>
: <tt>RS,<nazwa programu></tt>
: zlecenia te należy wykonać dla programów współpracujących z końcówką.
* dla programów wykonujących się w tle zastosować zlecenia:
: <tt>SP,<nazwa programu></tt>
: <tt>ST,<nazwa programu>,1,<poziom śledzenia></tt>
: <tt>RS,<nazwa programu></tt>

{{source|title=Translator języka CSL-CROOK dla minikomputera MERA-400 w systemie operacyjnym CROOK-4, Instrukcja Programisty (wersja-17/2)|author=Janusz Gocałek, Jacek Klauziński|date=Poznań, 1985}}

Menu nawigacyjne