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. |
*YES | Der Compiler erzeugt LSD-Informationen. |
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 | LSD-Information durch AID |
Binden, Laden | 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 | START-LLM-CREATION ..., INC-DEF=*PAR(..., TEST-SUPPORT=*YES) oder TEST-SUPPORT=*YES | START-LLM-CREATION ..., [INC-DEF=*PAR(..., TEST-SUPPORT=*NO)] oder INCLUDE-MODULES ..., [TEST-SUPPORT=*NO] |
Binden mit der | MODIFY-BIND-PROP ..., TEST-SUPPORT=*YES | MODIFY-BIND-PROP ..., [TEST-SUPPORT=*NO] |
Laden und Starten | 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:
Ggf. vorhandene Namensteile <cat-id> und <user-id> werden nicht übernommen.
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’