Your Browser is not longer supported

Please use Google Chrome, Mozilla Firefox or Microsoft Edge to view the page correctly
Loading...

{{viewport.spaceProperty.prod}}

Voraussetzungen für das symbolische Testen

&pagelevel(4)&pagelevel

Beim Testen auf symbolischer Ebene erlaubt es AID, Variablen mit den im Quellprogramm definierten Namen anzusprechen und sich auf einzelne Anweisungszeilen anhand von Source-Referenzen zu beziehen. Dafür müssen AID sog. LSD-Informationen zur Verfügung gestellt werden.

Die Erzeugung bzw. Weitergabe dieser Informationen wird bei jedem der folgenden Schritte durch Angabe entsprechender Operanden in den Steueranweisungen bzw. Kommandos gesteuert:

  • Übersetzen mit dem C/C++-Compiler

  • Binden und Laden mit dem dynamischen Bindelader

  • Binden mit dem BINDER

  • Binden mit der Compiler-Anweisung BIND

Übersetzen mit dem C/C++-Compiler

Das Erzeugen von LSD-Informationen wird mit folgender Option gesteuert:

//MODIFY-TEST-PROPERTIES TEST-SUPPORT = *NO / *YES

*NO

Bei der Voreinstellung *NO erzeugt der Compiler keine LSD-informationen.
Auch ohne LSD-Informationen ist eine Rückverfolgung der Aufrufhierarchien
möglich. Das heißt, bei Programmabbruch ist stets %SDUMP %NEST möglich.

*YES

Der Compiler erzeugt LSD-Informationen.
Dies ist jedoch nur für nicht optimierte Programme möglich. Sollte die Optimierung
dennoch eingeschaltet sein (siehe MODIFY-OPTIMIZATION-PROPERTIES-Anweisung),
bewertet der Compiler den Wunsch nach Testhilfe höher, schaltet die
Optimierungsstufe auf *LOW und gibt eine entsprechende Meldung aus.

Binden, Laden und Starten

Nachdem die LSD-Informationen bei der Übersetzung erzeugt worden sind, ist es möglich,

  • sie zusammen mit dem Gesamtprogramm zu laden oder

  • sie erst bei Bedarf für jede Übersetzungseinheit nachzuladen, falls die zugehörigen Module in einer PLAM-Bibliothek stehen.

Die folgende Tabelle gibt für beide Fälle einen Überblick über die Operanden, die zur Weitergabe der LSD-Informationen angegeben werden müssen:

Binde-/Lade-Art:

LSD-Information mit dem
Gesamtprogramm laden:

LSD-Information durch AID
nachladen (%SYMLIB):

Binden, Laden
und Starten mit
dem DBL

LOAD-EXECUTABLE-PROGRAM ...,

TEST-OPTIONS=*AID

oder

START-EXECUTABLE-PROGRAM ...,

TEST-OPTIONS=*AID

LOAD-EXECUTABLE-PROGRAM ...,

[TEST-OPTIONS=*NONE]

oder

START-EXECUTABLE-PROGRAM ...,

[TEST-OPTIONS=*NONE]

Binden mit dem
BINDER

START-LLM-CREATION ...,

INC-DEF=*PAR(...,

TEST-SUPPORT=*YES)

oder
INCLUDE-MODULES ...,

TEST-SUPPORT=*YES

START-LLM-CREATION ...,

[INC-DEF=*PAR(...,

TEST-SUPPORT=*NO)]

oder

INCLUDE-MODULES ...,

[TEST-SUPPORT=*NO]

Binden mit der
BIND-Anweisung

MODIFY-BIND-PROP ...,

TEST-SUPPORT=*YES

MODIFY-BIND-PROP ...,

[TEST-SUPPORT=*NO]

Laden und Starten
mit dem DBL

LOAD-EXECUTABLE-PROGRAM ...,

TEST-OPTIONS=*AID

oder

START-EXECUTABLE-PROGRAM ...,

TEST-OPTIONS=*AID

LOAD-EXECUTABLE-PROGRAM ...,

[TEST-OPTIONS=*NONE]

oder

START-EXECUTABLE-PROGRAM ...,

[TEST-OPTIONS=*NONE]

Ein Programm, das getestet werden soll, wird mit dem LOAD-EXECUTABLE-PROGRAM-Kommando geladen, damit anschließend AID-Kommandos eingegeben werden können.Ein Programm, das nur bei Auftreten eines Fehlers mit AID bearbeitet werden soll, kann mit dem START-EXECUTABLE-PROGRAM-Kommando geladen und gestartet werden.

Hinweis zum Binden des C-Laufzeitsystems

Wenn die Module aus der CRTE-Bibliothek SYSLNK.CRTE.PARTIAL-BIND eingebunden werden und das C-Laufzeitsystem selbst erst zum Ablaufzeitpunkt dynamisch nachgeladen wird (Voreinstellung beim Binden mit der BIND-Anweisung des Compilers), gibt es beim Testen mit AID folgende Einschränkung: Bei bestimmten Programmfehlern, z.B. fehlerhaften Parameterübergaben an C-Bibliotheksfunktionen, kann AID die Aufrufhierarchie nicht vollständig ausgeben, da u.U. die letzte Funktion vor Auftritt des Fehlers fehlt. Diese Einschränkung kann durch statisches Einbinden des C-Laufzeitsystems aufgehoben werden. Beim Binden mit der BIND-Anweisung des Compilers ist hierzu folgende Angabe erforderlich:
MODIFY-BIND-PROPERTIES STDLIB=*STATIC.

Name der Übersetzungseinheit in der S-Qualifikation

Bei LLMs wird der sog. „Sourcemodulname“ angegeben, der vom C/C++-Compiler wie folgt aus dem Namen des Quellprogramms abgeleitet wird:

  1. Ggf. vorhandene Namensteile <cat-id> und <user-id> werden nicht übernommen.

  2. Ist der Datei- bzw. Elementname des Quellprogramms länger als 32 Zeichen, wird er auf 32 Zeichen von rechts verkürzt.

Falls der Sourcemodulname Punkte enthält, muss er in der S-Qualifikation mit n’name’ angegeben werden.

Beispiel

Der Dateiname des Quellprogramms lautet HALLO.C.

S-Qualifikation z.B. im %TRACE-Kommando:
/%t 1 in s=n’hallo.c’