Die drei von CDUMP2 unterstützten Dumpformen unterscheiden sich im Umfang der angebotenen Informationen und im Namen und der Kennung für die ausgegebene Dump-Datei. Die folgenden Abschnitte stellen die wichtigsten Eigenschaften des Area-, User- und Systemdumps zusammen:
Areadump
Umfang des Areadumps:
Die im CDUMP2-Aufruf angegebenen Bereiche des Benutzeradressraumes aus dem Klasse-6-Speicher und Klasse-5-Speicher, sofern die Ausgabe nicht durch den Systemparameter DUMPCL5P verboten ist.
Besonders geschützte Seiten („Secret Pages“, Makroaufruf CSTAT PROTECT=YES) werden nur in dem Umfang ausgegeben, der durch den Systemparameter DUMPSEPA festgelegt ist.
Zusätzliche Systembereiche: Modul AIDSYSD, der Bereich mit der COMAREA, die Tabellen TCB und TU-PCB (siehe Userdump); darüber hinaus - falls mit dem Operanden MODE=*EXP angefordert - alle weiteren Systembereiche des Userdumps.
Datenräume (siehe Abschnitt „Erweiterung durch Datenräume“), an die der CDUMP2-Aufrufer konnektiert ist. Der Aufrufer bestimmt über den Datenbereich, welche Bereiche aus welchen Datenräumen gesichert werden sollen.
Mit /MODIFY-TEST-OPTIONS USERDUMP-OPTIONS=*PARAMETERS(...) kann die Ausgabe gesteuert werden, siehe „Kommandos“ [19].
Kennung für die Areadump-Datei:
Benutzerkennung der Task, die CDUMP2 aufgerufen hat, falls der Benutzer berechtigt ist, alle im Dump ausgegebenen Daten zu lesen.
Systemkennung SYSUSER, wenn der Dump lesegeschützte Daten enthält, auf die der Benutzer nicht zugreifen darf (z.B. Programme, die mit einem Lese-Kennwort geschützt sind, das der Benutzer nicht in die Passwort-Tabelle der Task eingetragen hat).
Name der Areadump-Datei:
$userid.SYS.ADUMP[.jobname].tsn.i
, falls die Datei unter der Kennung des CDUMP2-Aufrufers angelegt wird$SYSUSER.SYS.ADUMP[.jobname].tsn.i.userid
, falls die Datei unter der Systemkennung SYSUSER angelegt wird.Dabei bedeuten:
userid
Benutzerkennung des CDUMP2-Aufrufers
jobname
JOB-NAME des Auftrags, der CDUMP2 aufgerufen hat (aus dem SET-LOGON-PARAMETERS-Kommando)
tsn
TSN des Auftrags, der CDUMP2 aufgerufen hat i
laufende Nummer des Area-/ Userdumps innerhalb der Task
Userdump
Umfang des Userdumps:
Gesamter Klasse-6- und Klasse-5-Speicher, sofern nicht durch den Systemparameter DUMPCL5P verboten.
Besonders geschützte Seiten („Secret Pages“, Makroaufruf CSTAT PROTECT=YES) werden nur in dem Umfang ausgegeben, der durch den Systemparameter DUMPSEPA festgelegt ist.
Zusätzliche Systembereiche: Modul AIDSYSD, Trace Dump List; taskspezifische Systemtabellen wie TCB (Task Control Block), TFT (Task File Table), TU-PCB (Process Control Block), TU-AUDIT-TABLE (AUDIT-Tabelle, siehe Makro AUDIT).
Die System-Trace-Table wird zum Zeitpunkt des CDUMP2-Aufrufs zwischengespeichert und bei der Dump-Erstellung in den Dump eingearbeitet (an der Stelle, wo sie auch im System steht).
Zeigt der Fehlertask-Befehlszähler (PC) in den Systemadressraum, werden zusätzlich alle über Mehrzweckregister und PCs referenzierte Seiten (plus 5 Seiten davor und 5 Seiten danach) ausgegeben. Ist mindestens eine Seite dabei, die privilegiert, aber nicht „common readable“ ist, wird der Userdump auf die Kennung SYSUSER ausgegeben.
Datenräume (siehe Abschnitt „Erweiterung durch Datenräume“), an die der CDUMP2-Aufrufer konnektiert ist.Über den Makro-Operanden DS bestimmt der Aufrufer, ob bestimmte, alle oder keine Datenräume gesichert werden sollen. Wird der Operand DS nicht angegeben, so bestimmt der bei /MODIFY-TEST-OPTIONS Operand DATA-SPACES=*YES/*NO eingestellte Wert die Ausgabe der Datenräume.
Mit /MODIFY-TEST-OPTIONS USERDUMP-OPTIONS=*PARAMETERS(...) kann die Ausgabe gesteuert werden, siehe „Kommandos“ [19].
Kennung für die Userdump-Datei:
Benutzerkennung der Task, die CDUMP2 aufgerufen hat, wenn der Benutzer berechtigt ist, alle im Dump ausgegebenen Daten zu lesen und der Dump keine referenzierten Seiten enthält, die im privilegierten Adressraum liegen und nicht „common readable“ sind.
Systemkennung SYSUSER, wenn der Dump lesegeschützte Daten enthält, auf die der Benutzer nicht zugreifen darf (z.B. Programme, die mit einem Lese-Kennwort geschützt sind, das der Benutzer nicht in die Passwort-Tabelle der Task eingetragen hat).
Name der Userdump-Datei:
$userid.DUMP[.jobname].tsn.i
, falls die Datei unter der Benutzerkennung des CDUMP2-Aufrufers eingerichtet wird.$SYSUSER.DUMP[.jobname].tsn.i.userid
, falls die Datei unter der Benutzerkennung SYSUSER angelegt wird.Bedeutung siehe Areadump.
Systemdump
Einen Systemdump kann ein Anwender nur dann anfordern, wenn er mit /MODIFY-TEST-OPTIONS PRIVILEGE=*PARAMETERS(READ=m,WRITE=1) seine Leseprivilegierung auf einen Wert m>=3 eingestellt hat. Dazu ist er nur berechtigt, wenn ihm diese Privilegierungsmöglichkeit im Benutzerkatalog eingeräumt wurde.
Ein User- oder Areadump kann bei vorliegender Testprivilegierung (siehe oben) in einen Systemdump umgewandelt werden
mit /MODIFY-TEST-OPTIONS Operand DUMP=*SYSTEM. Die Meldung
IDA0N45
wird dann unterdrückt.durch die Antwort
Y,SYSTEM
auf die MeldungIDAN045
.
Der Operator kann steuern, ob der Systemdump auf Platte oder auf Magnetband ausgegeben wird.
Beim Systemdump wird, abhängig vom Wert des Systemparameters DUMPCTRL, bei einem abnormalen Dumpabbruch die Meldung IDA0N99
ausgegeben.
Umfang des Systemdumps:
Gesamter Klasse-6-Speicher - abhängig vom Wert des Systemparameters DUMPS-REF - mit Ausnahme der Seiten, die zu „Secret Pages“ erklärt wurden.
Gesamter Klasse-5, Klasse-3- und Klasse-1-Speicher mit Ausnahme der Seiten, die zu „Secret Pages“ erklärt wurden.
Alle Datenbereiche aus dem Klasse-4-Speicher sowie jene Coding-Seiten aus dem Klasse-4- und Klasse-2-Speicher, die bis zu einem Abstand von 5 Seiten vor und nach einer Adresse liegen, auf die die Befehlszähler (PC) aus den PCBs und der Trace Table sowie die Mehrzweckregister der PCBs und die Börsenregister des TCB verweisen. Ausgenommen davon sind „Secret Pages“.
Besonders geschützte Seiten („Secret Pages“, Makroaufruf CSTAT PROTECT=YES) werden nur in dem Umfang ausgegeben, der durch den Systemparameter DUMPSEPA festgelegt ist.
Mit SNAP wird der Klasse-1-, Klasse-3- und der residente Klasse-4-Speicher vor der eigentlichen Dump-Erstellung zwischengespeichert und anschließend in den Dump eingearbeitet.
Die System-Trace-Table wird zum Zeitpunkt des CDUMP2-Aufrufs zwischengespeichert und bei der Dump-Erstellung in den Dump eingearbeitet (an der Stelle, wo sie auch im System steht).
Zusätzliche Systembereiche: Die Module AIDSYSD, EOLDTAB, DMCHD, NSISINF, CLASS2OP; Bereiche mit TU-AUDIT, Trace Dump List und die Systemdateien REPLOG und SERSLOG; Systemtabellen wie beim Userdump.
Datenräume (siehe Abschnitt „Erweiterung durch Datenräume“), die das Betriebssystem über eine privilegierte Schnittstelle ($DMPDEF(I)) beim Dumperzeuger CDUMP angemeldet hat.
Kennung für die Systemdump-Datei: SYSDUMP
Name der Systemdump-Datei:
:catid:$SYSDUMP.{ABSOLU / modul}.pc.ec.tsn.datum.uhrzeit
Dabei bedeuten:
| Name des Moduls, aus dem CDUMP2 aufgerufen wurde, max. 8 |
| Wird eingesetzt, wenn kein Modulname existiert |
| Adresse im Befehlszähler (relativ zum Modulanfang bzw. absolut) |
| Ereigniscode (sedezimal) |
| TSN der Task, die CDUMP2 aufgerufen hat |
| Datum in der Form |
| Uhrzeit in der Form |
Dumpausgabe
Der Anwender kann einen Dump anfordern, wenn vorher /MODIFY-TEST-OPTIONS USERDUMP-OPTIONS=*PARAMETERS(DUMP=*YES) angegeben wurde bzw. DUMP=*STD voreingestellt ist. Bei DUMP=*YES wird der Dump automatisch erstellt, sonst erscheint bei der Dumpanforderung folgende Anfrage:
IDA0N45 DUMP DESIRED? REPLY (Y=USER-/AREADUMP TO DISK; Y,<VOLUMETYPE>=USER-/AREADUMP TO TAPE; Y,SYSTEM=SYSTEMDUMP; N=NO)
Der Anwender kann wahlweise einen User- oder Areadump (mit der Antwort: Y) oder einen Systemdump (mit der Antwort: Y,SYSTEM) auf Platte anfordern. Für die Anforderung eines Systemdumps ist eine entsprechende Testprivilegierung erforderlich. Bei Angabe von
<VOLUMETYPE>
wird der Dump auf Band ausgegeben.Wenn /MODIFY-TEST-OPTIONS USERDUMP-OPTIONS=*PARAMETERS(DUMP=*STD) voreingestellt ist, wird in Prozeduren oder im Batch-Betrieb kein Speicherauszug ausgegeben. Es erscheint folgende Meldung:
IDA0N48 TASK/SYSTEM SETTINGS PROHIBIT DUMP
Ist /MODIFY-TEST-OPTIONS USERDUMP-OPTIONS=*PARAMETERS(DUMP=*NO) gesetzt, wird die Dumpanforderung abgewiesen. Es erscheint folgende Meldung:
IDA0N47 DUMP PROHIBITED BY /MODIFY-TEST-OPTIONS COMMAND
Hat der Anwender einen Systemdump angefordert, erscheint an der Konsole folgende Meldung:
IDA0N52 SYSTEM DUMP DESIRED? REPLY (EOT=OUTPUT TO DISK;
<VOLUMETYP>=OUTPUT TO TAPE;
N=NO)
Die Konsolemeldung
IDA0N52
kann mit den Systemparametern DUMPCTRL und DUMPSD# unterdrückt werden. Generell wird die Meldung unterdrückt, wenn DUMP-CTRL auf „operatorlosen Betrieb“ oder „Fehler in Systemtask“ gesetzt ist. Weiter kann mit DUMPSD# die Anzahl der MeldungenIDA0N52
angegeben werden, die pro Session nicht an der Konsole erscheinen sollen.Wird
IDAN052
unterdrückt, so wird der Dump automatisch erstellt. Dadurch kann eine bessere Konsistenz der Daten im Klasse-3- und Klasse-4-Speicher erreicht werden.Ist für die Ausgabe eines User- oder Areadumps zu wenig Speicherplatz vorhanden, so wird mit folgender Meldung abgebrochen:
IDA0N57 INSUFFICIENT DISK SPACE. NO DUMP OUTPUT
Sind die CDUMP2-Operanden nicht ordnungsgemäß angegeben, wird die Speicherausgabeanforderung mit folgender Meldung abgewiesen:
IDA0N46 CDUMP OPERAND LIST INCORRECT OR NOT AVAILABLE .
Tritt bei der Ausgabe des Speicherabzugs ein Fehler im System auf, so werden (abhängig vom Fehler) folgende Meldungen ausgegeben:
IDA0N63 DMS xxxx ERROR OCCURRED. DUMP PROCESSING CONTINUED
Die Dump-Verarbeitung wird fortgesetzt.IDA0N61 DUMP PROCESSING ABORTED DUE TO aaa ERROR AT PC=bbb. RC=ccc
Diese Meldung wird bei User- oder Systemdump auch auf Konsole ausgegeben. Gleichzeitig wird bei Ausgabe der Meldung ein SERSLOG-Eintrag geschrieben. Die Dump-Verarbeitung wird abgebrochen.
Die Dump-Ausgabe wird zeitlich überwacht. Kann der Dump nicht innerhalb von 36 Minuten ausgegeben werden, wird die Dump-Ausgabe abgebrochen.
Einspielen von Dumpdateien vom Band
Wurde der Dump auf Magnetbandkassette gezogen, so kann er mittels COPY-FILE-Kommando auf Platte kopiert werden. Das Dienstprogramm PERCON kann in diesem Fall nicht benutzt werden.Beispiel
/IMPORT-FILE SUPPORT=*TAPE(VOLUME=<volume>,DEVICE=<device>,- FILE-NAME=<originaldateiname>) /ADD-FILE-LINK LINK=DMCOPY11,FILE-NAME=<originaldateiname>,- ACCESS-METHOD=*UPAM,BUF-LEN=*STD(2) /ADD-FILE-LINK LINK=DMCOPY22,FILE-NAME=<ausgabedateiname>,- ACCESS-METHOD=*UPAM,BUF-LEN=*STD(2) /COPY-FILE FROM-FILE=<originaldateiname>,TO-FILE=<ausgabedateiname>
Siehe dazu auch COPY-FILE-Kommando im Handbuch „Kommandos“ [19].
Allgemeines
Anwendungsgebiet: Testhilfe; siehe "Testhilfe"
Makrotyp: S-Typ, MF-Format 1: C-/D-/L-/M-/E-Form; siehe "S-Typ-Makroaufrufe"
Makrobeschreibung
Der Makro CDUMP2 erstellt (in einer eigenen Dumptask) einen Speicherabzug für die Task, die CDUMP2 aufgerufen hat. Durch Angabe des Operanden SCOPE kann der Anwender bestimmen, ob ein Area-, User- oder Systemdump ausgegeben werden soll.
Der Dump wird unaufbereitet als PAM-Datei auf Platte geschrieben (wahlweise auch auf Magnetband/Magnetbandkassette). Es ist nicht möglich, den Dump auf mehrere Bänder zu verteilen. Zur Auswertung und Druckausgabe kann der Dump mit den Software-Produkten DAMP und AID aufbereitet werden (siehe „Diagnosehandbuch“ [9] und „AID“ [3]).
Makroaufrufformat und Operandenbeschreibung
CDUMP2 |
MF=C / D / L / M / E ,SCOPE=*USER / *SYSTEM / *AREA [,XPAND=PARAM / DSCB / AREA] ,PC=*STD / <var: pointer> / (<reg: pointer> ) ,EC=*STD / <var: pointer> / (<reg: pointer> ) ,CODE=<var: pointer> / (<reg: pointer> ) ,INSERT=<var: pointer> / (<reg: pointer> ) ,TITL=*STD / <var: pointer> / (<reg: pointer> ) ,SNAP=*STD / *YES / *NO ,ELSN=*NONE / <var: pointer> / (<reg: pointer> ) ,DIAG=*NO / *YES ,DIV=*STD / *YES / *NO ,DS=*STD / *YES / *NO / <var: pointer> / (<reg: pointer>) ,MMAP=*STD / *YES / *NO ,NUM=<integer 1..2048> ,MODE=*STD / *EXP ,DSCTRL=<var: pointer> / (<reg: pointer> ) |
In der nachfolgenden Operandenbeschreibung sind die Operanden alphabetisch geordnet.
CODE=
bezeichnet eine Zeichenfolge zur Kennzeichnung des Dumps; Länge = 7 Byte. Die Zeichenfolge wird bei der Meldung IDA0N51
ausgegeben. Der Operand darf nur zusammen mit SCOPE=*USER oder SCOPE=*SYSTEM angegeben werden.
<var: pointer>
Name des Feldes mit der Adresse der Zeichenfolge; nur in Verbindung mit MF=M zulässig.
(<reg: pointer>)
Register mit der Adresse der Zeichenfolge; nur in Verbindung mit MF=M zulässig.
DIAG=
steuert, ob die Meldung IDA0N50
an den Operator gesendet wird, die die Adresse des CDUMP2-SVCs enthält. Der Operand darf nur in Verbindung mit SCOPE=*SYSTEM angegeben werden.
*NO
Die Meldung IDA0N50
wird nicht ausgegeben.
*YES
Die Meldung IDA0N50
wird ausgegeben.
DIV=
gibt an, ob DIV-Fenster im Userdump enthalten sein sollen. Der Operand darf nur zusammen mit SCOPE=*USER angegeben werden, andernfalls wird DIV=*YES angenommen. Siehe auch Abschnitt „Erweiterung durch Datenräume“.
*STD
Der mit dem Operanden DATA-IN-VIRTUAL in /MODIFY-TEST-OPTIONS eingestellte Wert bestimmt, ob DIV-Fenster im Userdump enthalten sein sollen (*YES) oder nicht (*NO).
*YES
Es sollen alle DIV-Fenster im Userdump enthalten sein.
*NO
Es sollen keine DIV-Fenster im Userdump enthalten sein.
DS=
bestimmt, welche Speicherbereiche aus Datenräumen (DS) in den Userdump aufgenommen werden sollen. Angabe nur zusammen mit SCOPE=*USER.
Im Areadump sind genau diejenigen Bereiche aus Datenräumen enthalten, die der Benutzer beim DSCTRL-Operanden angegeben hat. Bei Systemdumps werden nur die Bereiche aus Datenräumen aufgenommen, die das Betriebsystem über eine priviligierte Schnittstelle ($DMPDEF(I)) beim Dumperzeuger CDUMP angemeldet hat.
Siehe auch Abschnitt „Erweiterung durch Datenräume“.
*STD
Der mit dem Operanden DATA-SPACES in /MODIFY-TEST-OPTIONS eingestellte Wert bestimmt, ob Datenräume in den Userdump aufgenommen werden sollen (*YES) oder nicht (*NO).
*YES
Es werden alle, aber max. 100, vom Aufrufer genutzte Datenräume in den Userdump aufgenommen.
*NO
Es werden keine Datenräume in den Userdump aufgenommen.
<var: pointer>
Name des Feldes mit der Adresse der Liste der Datenräume; nur in Verbindung mit MF=M zulässig.
(<reg: pointer>)
Register mit der Adresse der Liste der Datenräume; nur in Verbindung mit MF=M zulässig.
Diese Liste enthält die SPIDs (8 Byte pro Eintrag). Sie muss mit einem Null-Eintrag (D(0)) abgeschlossen werden.
DSCTRL=
ist ein Zeiger auf einen Data Space Control Block (DSCB). Im DSCB können ein Datenraum und die zugehörigen Bereiche definiert werden. DSCTRL muss auf den ersten DSCB zeigen. Der Operand darf nur zusammen mit SCOPE=*AREA angegeben werden.
Datenstruktur eines DSCB:
CDDDSCB DSECT , DATA SPACE CTRL BLOCK CDDDS@ DS A Zeiger auf nächsten DSCB CDDSPID DS XL8 SPID des DS CDDNUM DS H Anzahl der Bereiche im DS CDDSTRT DS A Beginn des ersten Bereiches CDDEND DS A Ende des ersten Bereiches
Maximale Anzahl der Bereiche im DSCB ist 2048. Der Anwender kann DSCB-Blöcke verketten, um Bereiche mehrerer Datenräume seiner Task angeben zu können. Standardmäßig sind keine Bereiche aus einem Datenraum angegeben. Siehe auch Abschnitt „Erweiterung durch Datenräume“.
<var: pointer>
Name des Feldes mit der Adresse des DSCB; nur in Verbindung mit MF=M zulässig.
(<reg: pointer>)
Register mit der Adresse des DSCB; nur in Verbindung mit MF=M zulässig.
Angabe, um die DSECT eines DSCB zu erhalten: CDUMP2 MF=D,XPAND=DSCB. Angabe, um die DSECT eines Bereichs zu erhalten: CDUMP2 MF=D,XPAND=AREA.
EC=
bestimmt, woher der Ereigniscode (Eventcode, Unterbrechungsgewicht) geholt werden soll. Der Ereigniscode wird in der Meldung IDA0N51
ausgegeben. Der Operand darf nur zusammen mit SCOPE=*USER oder SCOPE=*SYSTEM angegeben werden, bei SCOPE=*AREA wird der Ereigniscode stets aus dem Aufrufer-Stack geholt.
*STD
Der Ereigniscode soll aus dem Aufrufer-Stack geholt werden.
<var: pointer>
Name des Feldes mit der Adresse des Ereigniscodes; nur in Verbindung mit MF=M zulässig.
(<reg: pointer>)
Register mit der Adresse des Ereigniscodes; nur in Verbindung mit MF=M zulässig.
ELSN=
bezeichnet die Adresse eines Feldes mit der Nummer eines Error-Log-Sequence-Blocks, in den der Aufrufer spezielle Daten in die Error-Log-Datei abgelegt hat. Die Nummer wird in der Meldung IDA0N51
ausgegeben.
Feldlänge = 4 Byte; Ausrichtung auf Wortgrenze erforderlich. Die Nummer muss als Binärzahl eingegeben werden. Der Operand darf nur in Verbindung mit SCOPE=*SYSTEM angegeben werden.
*NONE
Ein ELSN wird nicht ausgegeben.
<var: pointer>
Name des Feldes mit der Adresse des ELSN; nur in Verbindung mit MF=M zulässig.
(<reg: pointer>)
Register mit der Adresse des ELSN; nur in Verbindung mit MF=M zulässig.
INSERT=
legt einen Text fest, der mit der Meldung IDA0N51
ausgegeben wird. In ihm können z.B. nähere Angaben zur Ursache des Speicherabzuges gemacht werden.
Der Anwender muss diesen Text, der bis zu 60 Zeichen lang sein darf, in einem Datenbereich hinterlegen. Aufbau des Datenbereichs:
Byte 1: | Länge (sedezimal) des auszugebenden Textes (in Byte). Enthält |
Byte 2 bis n (n<=61): | Auszugebender Text. |
Der Operand darf nur zusammen mit SCOPE=*USER oder SCOPE=*SYSTEM angegeben werden.
<var: pointer>
Name des Feldes mit der Adresse des Textes; nur in Verbindung mit MF=M zulässig.
(<reg: pointer>)
Register mit der Adresse des Textes; nur in Verbindung mit MF=M zulässig.
MF=
Zur allgemeinen Beschreibung des Operanden MF, der dazugehörenden Operandenwerte und der evtl. nachfolgenden Operanden (z.b. für einen Präfix) siehe Abschnitt „S-Typ-Makroaufrufe“. Die gültigen MF-Werte sind zu Beginn der Makrobeschreibung bei „Makrotyp“ angegeben und aus dem Aufrufformat ersichtlich.
Für Areadumps sind folgende Angaben Pflicht: Bei MF=C/D/E muss der Operand SCOPE, bei MF=C/D zusätzlich der Operand NUM angegeben werden.
Für Systemdumps ist folgende Angabe Pflicht: Bei MF=C/D/E muss der Operand SCOPE angegeben werden.
MMAP=
legt fest, ob Memory-Map-Seiten (Datenbereiche von POSIX-Seiten) im Dump gesichert werden sollen. Dieser Operand wird nur zusammen mit SCOPE=*USER ausgewertet. Für SCOPE=*SYSTEM wird MMAP=*YES angenommen.
*STD
Der mit dem Operanden MEMORY-MAP in /MODIFY-TEST-OPTIONS eingestellte Wert bestimmt, ob Memory-Map-Seiten im Userdump enthalten sein sollen.
*YES
Es sollen alle zur Task gehörenden Memory-Map-Seiten im Userdump enthalten sein.
*NO
Es sollen keine Memory-Map-Seiten im Userdump enthalten sein.
MODE=
legt bei einem Areadump den Umfang der auszugebenden Diagnosedaten fest. Der Operand darf nur zusammen mit SCOPE=*AREA angegeben werden.
*STD
Bewirkt, dass zusätzlich zu den angegebenen Bereichen im Klasse-6- und Klasse-5-Speicher nur das Modul AIDSYSD und die Bereiche mit COMAREA, TU-PCB und TCB ausgegeben werden (siehe Abschnitt „Areadump“).
*EXP
veranlasst, dass zusätzlich zu den angegebenen Bereichen in Klasse-6- und Klasse-5-Speicher auch der Bereich mit COMAREA sowie alle weiteren Systembereiche wie beim Userdump ausgegeben werden (siehe Abschnitt „Userdump“).
NUM=
bezeichnet die Anzahl der auszugebenden Bereiche. NUM darf nur in Verbindung mit MF=L/C/D und nur in Verbindung mit SCOPE=*AREA angegeben werden. Die Anfangs- und Endadressen der auszugebenden Bereiche müssen (dynamisch) im erzeugten Datenbereich eingetragen werden. Die DSECT des Bereichs wird mit CDUMP2 MF=D, XPAND=AREA
erzeugt. In Verbindung mit MF=C/D ist NUM Pflichteingabe.
<integer 1..2048>
Anzahl der auszugebenden Bereiche als Direktangabe; Zahlenbereich: 1..2048.
PC=
bezeichnet ein Register oder Feld, das den zu protokollierenden Befehlszähler enthält.
*STD
Der Befehlszähler soll aus dem Aufrufer-Stack geholt werden.
<var: pointer>
Name des Feldes mit der Adresse des Befehlszählers; nur in Verbindung mit MF=M zulässig.
(<reg: pointer>)
Register mit der Adresse des Befehlszählers; nur in Verbindung mit MF=M zulässig.
SCOPE=
gibt an, ob ein User-, System- oder Areadump ausgegeben werden soll.
*USER
Ein Userdump wird ausgegeben.
*SYSTEM
Ein Systemdump wird ausgegeben. Angabe nur erlaubt für Anwender mit Lese-Testprivilegierung >= 3 bzw. für TPR-Programme.
*AREA
Ein Areadump wird ausgegeben.
Die Adressen für die Bereiche müssen direkt nach der Parameterliste angegeben werden. In Abhängigkeit von der Anzahl der Bereiche müssen die Adressen in der Abfolge Anfangsadresse, Endadresse, Anfangsadresse, Endadresse, ..., Anfangsadresse, Endadresse angegeben werden.
SNAP=
steuert die Verwendung des SNAP zur Erstellung eines hochkonsistenten Systemdumps. Der Operand darf nur zusammen mit SCOPE=*SYSTEM angegeben werden.
*STD
bedeutet, dass zur Erstellung des Systemdumps ein zugehöriger Snapdump verwendet wird, falls ein solcher vorhanden ist (wenn der Systemdump auf Grund eines TPR-Programmfehlers entstanden ist, so wurde in der Regel vom System dazu ein Snapdump erzeugt).
*YES
Bedeutet, dass CDUMP2 einen Snapdump erzeugt (falls nicht schon ein zugehöriger vorhanden ist) und diesen zur Erstellung des Systemdumps verwendet.
*NO
bedeutet, dass CDUMP2 den Systemdump ohne Verwendung eines (eventuell trotzdem vorhandenen) zugehörigen Snapdump erstellt.
TITL=
bezeichnet eine zusätzliche Titelzeile für den Speicherabzug. Länge = 132 Zeichen.
*STD
CDUMP2 erzeugt eine Standard Titelzeile.
<var: pointer>
Name des Feldes mit der Adresse der Titelzeile; nur in Verbindung mit MF=M zulässig.
(<reg: pointer>)
Register mit der Adresse der Titelzeile; nur in Verbindung mit MF=M zulässig.
XPAND=
gibt an, ob eine DSECT für die CDUMP2-Parameterliste, den DSCB oder einen Bereich erzeugt werden soll. Die Angabe ist nur in Verbindung mit MF=D möglich.
PARAM
Es wird eine DSECT für die CDUMP2-Parameterliste erzeugt.
DSCB
Es wird eine DSECT für den Data-Space-Control-Block erzeugt.
AREA
Es wird eine DSECT für einen Bereich erzeugt.
Angabe, um die DSECT eines DSCB zu erhalten: CDUMP2 MF=D,XPAND=DSCB. Angabe, um die DSECT eines Bereichs zu erhalten: CDUMP2 MF=D,XPAND=AREA.
Rückinformation und Fehleranzeigen
Die Returncodes sind kompatibel zu denen des alten Makro CDUMP
Standardheader:
+---------------+ | | | | | | | | | | | |a|a| +---------------+
Über die Ausführung des Makros CDUMP2 wird im Standardheader folgender Returncode übergeben (aa=Maincode):
X'aa' | Erläuterung |
X'00' | Dump fehlerfrei abgeschlossen. |
X'04' | Dump unter Verwendung von Standardwerten abgeschlossen. |
X'08' | Dump wegen /OPTION DUMP-Operand unterdrückt. |
X'0C' | Dump wegen Systemkonventionen unterdrückt. |
X'10' | Dump wegen schwerer CDUMP2-Operandenfehler unterdrückt. |
X'14' | Dump wegen unzureichender Testprivilegierung unterdrückt. |
X'18' | Dump wegen Fehler in DMS-Routinen unterdrückt. |
X'1C' | Dump wegen Systemfehler unterdrückt. |
X'20' | Dump unterdrückt, weil CDUMP2 zuvor unterbrochen wurde. |
X'28' | Dump wegen SHUTDOWN-Bearbeitung unterdrückt. |
X'2C' | Dump vom Aufrufer unterdrückt. |
X'30' | Alle Bereichsangaben sind ungültig. Keine Dumpausgabe. |
X'34' | Falsche Angabe bei NUM=... . Keine Dumpausgabe. |
X'38' | Einige Dumpbereiche liegen nicht im Adressraum des Aufrufers oder die Angaben sind |
X'3C' | Dump unterdrückt, da DMS-Ready noch nicht erreicht ist. |
Beispiel
Das folgende Programm legt im Klasse-6-Speicher einen Memory Pool an und erzeugt einen User- sowie einen Areadump.
CDUMP2 START PRINT NOGEN BALR 3,0 USING *,3 ENAMP MPNAME=MEMP,SCOPE=GLOBAL,MPIDRET=PID,BSIZE=48 ------------(1) REQMP REQMP MPID=PID,BSIZE=5 -----------------------------------------(2) LA 4,4095(1) LA 4,1(4) ST 4,AR1ANF MVC 0(TEXT1LEN,4),TEXT1 --------------------------------------(3) LA 4,4095(4) ST 4,AR1END LA 4,1(4) ST 4,AR2ANF MVC 0(TEXT2LEN,4),TEXT2 --------------------------------------(4) LA 4,4095(4) ST 4,AR2END CDUMPUS CDUMP2 MF=E,PARAM=PARAM ----------------------------------------(5) CDUMPAR CDUMP2 MF=E,PARAM=AREA -----------------------------------------(6) TERM TERM **** Definitions **** DS 0F PID DS F TEXT1 DC C'AREADUMP: ' DC C'PAGE 2 OF MEMORY POOL ' DC 100C'A' DC 100C'B' TEXT1LEN EQU *-TEXT1 TEXT2 DC C'AREADUMP: ' DC C'PAGE 3 OF MEMORY POOL ' DC 100C'C' DC 100C'D' TEXT2LEN EQU *-TEXT2 PARAM CDUMP2 MF=L,SCOPE=*USER ----------------------------------------(7) AREA CDUMP2 MF=L,SCOPE=*AREA,NUM=2,MODE=*EXP ------------------------(8) AR1ANF DS A --------------------------------------------------------(9) AR1END DS A AR2ANF DS A AR2END DS A END
(1) | Oberhalb der 16MB-Grenze wird ein 48 Hauptspeicherseiten großer Memory Pool eingerichtet. Die Anfangsadresse des Memory Pools wird in Register R1 abgelegt. |
(2) | Ab der Anfangsadresse des Memory Pools werden fünf Hauptspeicherseiten angefordert. |
(3) | Der Text |
(4) | Der Text |
(5) | An der symbolischen Adresse CDUMPUS des Programms wird der Makro CDUMP2 in seiner E-Form aufgerufen. Der zugehörige Datenbereich wird an der symbolischen Adresse PARAM durch einen CDUMP2-Aufruf mit MF=L erzeugt (siehe (7)). Die dort angegebenen Operanden veranlassen den Makro bei seiner Ausführung einen Userdump auszugeben (SCOPE=*USER). |
(6) | An der symbolischen Adresse CDUMPAR des Programms wird der Makro CDUMP2 erneut in seiner E-Form aufgerufen. Der zugehörige Datenbereich wird in diesem Fall an der symbolischen Adresse AREA durch einen CDUMP2-Aufruf mit MF=L erzeugt (siehe (8)). Die dort angegebenen Operanden veranlassen den Makro, bei seiner Ausführung einen Areadump für zwei Bereiche (NUM=2) in seiner erweiterten Form auszugeben. |
(7) | Datenbereich für den CDUMP2-Aufruf von Punkt (5). |
(8) | Datenbereich für den CDUMP2-Aufruf von Punkt (6). |
(9) | Die Adressen für die Bereiche müssen direkt nach der Parameterliste angegeben werden. In Abhängigkeit von der Anzahl der Bereiche müssen die Adressen in der Abfolge Anfangsadresse, Endadresse, Anfangsadresse, Endadresse, ..., Anfangsadresse, Endadresse angegeben werden. |
Ablaufprotokoll:
/start-assembh % BLS0500 PROGRAM 'ASSEMBH', VERSION '<ver>' OF '<date>' LOADED % ASS6010 <ver> OF BS2000 ASSEMBH READY //compile source=*library-element(macexmp.lib,cdump2), - // compiler-action=module-generation(module-format=llm), - // module-library=macexmp.lib, - // listing=parameters(output=*library-element(macexmp.lib,cdump2)) % ASS6011 ASSEMBLY TIME: 492 MSEC % ASS6018 0 FLAGS, 0 PRIVILEGED FLAGS, 0 MNOTES % ASS6019 HIGHEST ERROR-WEIGHT: NO ERRORS
% ASS6006 LISTING GENERATOR TIME: 82 MSEC //end % ASS6012 END OF ASSEMBH /start-executable-program library=macexmp.lib,element-or-symbol=cdump2 % BLS0523 ELEMENT 'CDUMP2', VERSION '@' FROM LIBRARY ':2OSG:$QM212.MACEXMP.LIB' IN PROCESS % BLS0524 LLM 'CDUMP2', VERSION ' ' OF '<date> <time>' LOADED % IDA0N51 PROGRAM INTERRUPT AT LOCATION '0000006A (CDUMP2), (CDUMP)' % IDA0N45 DUMP DESIRED? REPLY (Y=USER-/AREADUMP TO DISK; Y,<VOLUMETYPE>= USER-/AREADUMP TO TAPE; Y,SYSTEM=SYSTEMDUMP TO DISK; Y,SYSTEM,<VOLUMETYPE>=SYSTEMDUMP TO TAPE; N=NO)? y ------------------(10) % IDA0N53 DUMP BEING PROCESSED. PLEASE HOLD ON % IDA0N54 'USERDUMP' WRITTEN TO FILE '$QM212.DUMP.V.2RCU.00001' -------(11) % IDA0N55 TITLE: 'TSN-2RCU UID-QM212 AC#-89002 USERDUMP PC-0000006A EC-50 VERS-150 DUMP-TIME 13:47:16 12-01-20' % IDA0N51 PROGRAM INTERRUPT AT LOCATION '00000070 (CDUMP2), (ADUMP)' % IDA0N45 DUMP DESIRED? REPLY (Y=USER-/AREADUMP TO DISK; Y,<VOLUMETYPE>=USER-/AREADUMP TO TAPE; Y,SYSTEM=SYSTEMDUMP TO DISK; Y,SYSTEM,<VOLUMETYPE>=SYSTEMDUMP TO TAPE; N=NO)? y ------------------(12) % IDA0N53 DUMP BEING PROCESSED. PLEASE HOLD ON % IDA0N54 'AREADUMP' WRITTEN TO FILE '$QM212.SYS.ADUMP.V.2RCU.00002' --(13) % IDA0N55 TITLE: 'TSN-2RCU UID-QM212 AC#-89002 AREADUMP PC-00000070 EC-50 VERS-150 DUMP-TIME 13:47:22 12-01-20'
(10) | Ein User- oder Areadump wird auf Platte ausgegeben, wenn die Abfrage in der Meldung |
(11) | Die Datei mit dem Userdump wird unter der Benutzerkennung des Aufrufers katalogisiert. |
(12) | siehe (10) |
(13) | Die Datei mit dem Areadump wird unter der Benutzerkennung des Aufrufers katalogisiert. |
Die Dumps können mit dem Dienstprogramm DAMP (siehe „Diagnosehandbuch“ [9]) für die Dialogauswertung oder Druckausgabe aufbereitet werden.