Mit der Funktion FIND können Sie Zeichenketten im gesamten Bereich des Diagnoseobjekts suchen lassen. Dabei kann der Suchbereich nach Speicher-Intervall, Ladeeinheiten bzw. Speicherklassen definiert werden.
DAMP unterstützt die Suche mit einem und mit zwei Suchbegriffen. Bei der Suche mit zwei Suchbegriffen muss der Abstand zwischen dem Anfang des ersten und dem Anfang des zweiten Suchbegriffs angegeben werden.
Bezogen auf den ersten Suchbegriff kann der Anwender eine spezielle Speicherausrichtung angeben. Für beide Suchbegriffe werden von DAMP verschiedene Formate von Zeichenketten (Sedezimal-, Character-, String- und Text-Format) und veränderbare Wildcard-Symbole unterstützt. Durch Angabe einer maximalen Anzahl von Treffern kann die Suche eingeschränkt werden.
Voraussetzung für die Ausführung der FIND-Funktion ist ein geöffnetes Diagnoseobjekt. Aufgerufen wird die Suche nach Zeichenketten durch die Anweisung
START-PATTERN-SEARCH WINDOW=<w>
Nach dem Aufruf erscheint zuerst das FIND-Auswahlfenster. Dieses Auswahlfenster dient zur Festlegung des Suchbereichs und der Suchbegriffe. Durch eine entsprechende Eingabe in den Feldern „ASEL“ und „ASID“ kann in jedem von DAMP unterstützten Adressraum gesucht werden (siehe auch "Eingabefelder der Standard-Dumpfenster (W4 - W9 und W21 - W99)").
im virtuellen Adressraum (ASEL = TSN | TID),
im Datenraum (ASEL = ALT | SPI),
im realen Adressraum (ASEL = RM),
im absoluten Adressraum (ASEL = ABS),
im Processor Saved Status (ASEL = PSS),
in der Hardware System Area (ASEL = HSA),
in einer Dumpfile-Section (ASEL = SCT).
Dem FIND-Fenster liegen folgende Eingabe-Prinzipien zu Grunde:
Alle Eingabedaten bleiben nach Ausführung der FIND-Funktion erhalten und sind für die nächste Funktionsausführung voreingestellt; es kann immer auf der vorherigen Spezifikation aufgesetzt werden.
Alle Eingabefelder werden bei der Funktions-Ausführung so interpretiert, wie sie auf dem Bildschirm angezeigt werden.
Vor der Funktionsausführung muss nur ein Eingabefeld modifiziert werden. Eine Ausnahme stellt lediglich ein neues FIND-Fenster dar: hier müssen zumindest der Suchbereich und der 1. Suchbegriff definiert werden.
Zum Zurücksetzen von Eingaben auf „nicht spezifiziert“ dürfen ausschließlich Leerzeichen verwendet werden. Nil-Zeichen (X'00') dürfen dazu nicht benutzt werden. (Ausnahmen bilden die beiden Suchbegriffe.)
Bild 53: Auswahlmaske für die Suche im virtuellen Adressraum
Bild 54: Auswahlmaske für die Suche in den übrigen Adressbereichen (am Beispiel ASEL=ALT)
Die Ausgabe erfolgt standardmäßig am Bildschirm und in das gleiche Diagnosefenster wie die Eingabe. Der Anwender kann als Ausgabemedium auch eine Datei, *SYSLST oder *EDT angeben (Output Area). Weiter hat er die Möglichkeit, nur die Anzahl der gefundenen Treffer ausgeben zu lassen und die Trefferliste zu unterdrücken („Count only=Y“).
Spezifikation des Suchbereichs
Bei der Auswahl des Suchbereichs im virtuellen Adressraum können ein Speicher-Intervall (Interval), eine oder mehrere Ladeeinheiten (Load Unit) bzw. eine oder mehrere Speicherklassen (Memory Class) angegeben werden. Alle drei Suchbereichs-Spezifikationen sind disjunkt: es muss also immer genau eine Spezifikation gültig sein, Verknüpfungen werden nicht unterstützt.
In den anderen Adressräumen kann nur ein Interval angegeben werden.
Die Auswahl des aktuell gültigen Suchbereichs erfolgt durch DAMP:
ist genau ein Suchbereich spezifiziert - explizit spezifiziert oder bei dem vorhergehenden FIND-Aufruf voreingestellt - so wird dieser ausgewählt;
sind zwei Suchbereiche spezifiziert, von denen genau einer explizit spezifiziert wurde, so wird dieser ausgewählt;
sind mehrere Suchbereiche explizit spezifiziert, wird der Aufruf der Funktion mit Ausgabe einer Meldung zurückgewiesen.
Ein Suchbereich ist genau dann explizit spezifiziert, wenn die Modifikationen sich nicht ausschließlich auf das Überschreiben von Feldern mit Leerzeichen beschränken.
Nach der Auswahl eines Suchbereichs werden alle Werte der anderen Suchbereiche von DAMP implizit zurückgesetzt, ein explizites Zurücksetzen ist nicht erforderlich.
Für den virtuellen Adressraum (ASEL=TSN | TID) wird die Suche in einem ausgewählten Adressraum (ASID=<tsn>|<tid>) sowie in allen im Objekt enthaltenen Adressräumen (ASID=*ALL) unterstützt. Bei ASID=<tsn>|<tid> können Suchbereiche aus dem Benutzer- und Systemspeicher eingegeben werden, bei ASID=*ALL ist nur die Eingabe von Bereichen, die vollständig im Benutzeradressraum liegen, erlaubt.
Suchbereich Interval
Feld Start
Feld Endgibt die Startadresse des Suchbereichs an
gibt die Endadresse des Suchbereichs anDer Suchbereich ist nur dann vollständig definiert, wenn sowohl Start- als auch Endadresse spezifiziert sind. Es gibt keine Voreinstellungen.
Suchbereich Load Unit
Dieser Suchbereich spezifiziert die Module von BLS- bzw. DSSM-Ladeeinheiten.Die Eingrenzung des Suchbereichs erfolgt hierarchisch in folgenden Ebenen:
„Scope“
->
„Subsystem“->
„Version“->
„Module“.Falls „Load Unit“ als Suchbereich eingestellt wird, müssen nicht alle verfügbaren Felder spezifiziert werden. Für jedes Feld wird, falls es nicht spezifiziert ist, eine implizite Annahme getroffen.
Auswahlleiste Scope
DISTANCEDISTANCEDSpezifiziert ein oder mehrere BLS- bzw. DSSM-Ladebereiche
ALL
alle Module (aus CP, allen Subsystemen und dem Benutzerprogramm)
CLASS4 alle Module aus dem Systemadressraum, außer CP PRIV alle Module aus CP und den privilegierten Subsystemen NONPRIV alle Module aus den nichtprivilegierten Subsystemen und dem Benutzerprogramm USER alle Module aus dem Benutzerprogramm Falls „Load Unit“ als Suchbereich eingestellt und „Scope“ nicht angegeben wurde, wird implizit „Scope=ALL“ angenommen.Bei NONPRIV bzw. USER hängt das Ergebnis der Suche davon ab, ob die eingestellte Task an die Subsysteme angeschlossen ist bzw. ob die Task ein Programm geladen hat.
Feld Subsystem
DISTANCEDISTANCEDSpezifiziert ein oder mehrere Subsysteme.
Subsystemnamen können in einer Länge von bis zu 8 Zeichen eingegeben werden. Zur Angabe von mehreren Subsystemen werden Wildcards unterstützt: das Symbol „
*
“ ersetzt hierbei beliebig viele Zeichen des Namens, während „/“ genau ein Zeichen ersetzt.
Falls „Load Unit“ als Suchbereich eingestellt und „Subsystem“ nicht angegeben wurde, wird implizit „Subsystem=*
“ (alle Subsysteme aus dem spezifizierten „Scope“) angenommen.Feld Version Spezifiziert eine oder mehrere Subsystem-Versionen.
Versionen können in einer Länge von bis zu acht Zeichen eingegeben werden. Zur Angabe von mehreren Versionen werden Wildcards unterstützt (analog zum Feld „Subsystem“).
Falls „Load Unit“ als Suchbereich eingestellt und „Version“ nicht angegeben wurde, wird implizit „Version=*
“ (alle Versionen der spezifizierten Subsysteme) angenommenFeld Module
Spezifiziert ein oder mehrere Module.
Modulnamen können in einer Länge von bis zu 32 Zeichen eingegeben werden. Zur Angabe von mehreren Modulen werden Wildcards unterstützt (analog zum Feld Subsystem).
Falls „Load Unit“ als Suchbereich eingestellt und „Module“ nicht angegeben wurde, wird implizit „Module=*
“ (alle Module der spezifizierten Subsysteme) angenommen.Suchbereich Memory Class
Dieser Suchbereich spezifiziert eine oder mehrere Speicherklassen als Suchbereich(e). Die Speicherklassen werden durch Ankreuzen ausgewählt, wobei alle möglichen Kombinationen erlaubt sind. Die Auswahl von Speicherklassen aus dem Benutzeradressraum gilt jeweils nur für die aktuell eingestellte Task.
Es werden folgende (Sub-)Speicherklassen unterstützt:
Feld
gewählter Bereich
ALL
CL1
CL2
CL3PP
CL3FP
CL4PP
CL4FP
CL4NPClass-1-Memory
Class-2-Memory
Class-3-Partial-Pages
Class-3-Full-Pages
Class-4-Partial-Pages
Class-4-Full-Pages
Class-4-Nonpriv-PagesCL5PP
CL5FP
CL5MP
CL6FP
CL6MPClass-5-Partial-Pages
Class-5-Full-Pages
Class-5-Memory-Pool
Class-6-Full-Pages
Class-6-Memory-Poolalle Speicherklassen
residente Systemmodule
seitenwechselbare Systemmodule
residente Teilseiten
residente Vollseiten
seitenwechselbare Teilseiten
seitenwechselbare Vollseiten
nicht privilegierte Klasse-4-Seiten
System-
adress-
raumprivilegierte Teilseiten
privilegierte Vollseiten
Klasse-5-Memory-Pool
nicht privilegierte Vollseiten
Klasse-6-Memory-Pool
Benutzer-
adress
raum
Tabelle 7: Speicherbereiche (Auswahl erfolgt durch Ankreuzen)
Spezifikation der Suchbegriffe
Es ist die Angabe von einem Suchbegriff bzw. von zwei Suchbegriffen möglich. Bei der Angabe von zwei Suchbegriffen muss der Anwender den Abstand zwischen dem Anfang des ersten und dem Anfang des zweiten Suchbegriffs angeben. Die Spezifikation der Suchbegriffe erfolgt über die Felder 1.Search Strg, Offset und 2.Search Strg.
Über das Feld Alignment kann, bezogen auf den ersten Suchbegriff, eine Speicherausrichtung spezifiziert werden. Außerdem kann das Feld Wildcard Symbol vom Anwender verändert werden.
Feld 1.Search Strg
spezifiziert einen (den ersten) Suchbegriff. Dieser Suchbegriff muss immer angegeben sein. Er besteht aus maximal 64 Zeichen, denen ein Byte als Format-Typ vorangestellt ist.Es werden folgende Formate unterstützt:
X
C
S
TSedezimal-Format
Character-Format
String-Format
Textformat
DISTANCEDISTANCerlaubt sind die Zeichen 0..9 und A..F
Umwandlung der Klein- in Großbuchstaben beim Suchbegriff und anschließender Vergleich
ohne Umwandlung
Umwandlung der Groß- in Kleinbuchstaben, sowohl beim Suchbegriff als auch beim Suchbereichsinhalt, und anschließender VergleichVoreingestellt ist das Format C.
Beim Suchbegriff werden Wildcards unterstützt. Das Wildcard-Symbol entspricht dem unter „Wildcard Symbol“ definierten Zeichen. Es kann an beliebiger Stelle des Suchbegriffs verwendet werden und ersetzt jeweils genau ein Zeichen im Suchbegriff.
Feld Offset
spezifiziert den Abstand zwischen dem Anfang des „1.Search Strg“ und dem Anfang des „2.Search Strg“. Der „Offset“ wird als Sedezimalwert angegeben. Um den Offset auf „nicht spezifiziert“ zu setzen, muss das Eingabefeld mit Leerzeichen überschrieben werden.Feld 2.Search Strg
spezifiziert den zweiten Suchbegriff. Der „2.Search Strg“ ist analog zum „1.Search Strg“ definiert. Er wird nur dann für die Suche berücksichtigt, wenn ein „Offset“ angegeben ist.Feld Wildcard Symbol
spezifiziert ein Zeichen, das im „1.Search Strg“ und im „2.Search Strg“ als Wildcard-Symbol verwendet werden darf. Das Wildcard-Symbol ist mit „*
“ voreingestellt und kann vom Anwender verändert werden. Erlaubt sind alle Zeichen außer Ziffern, Buchstaben und Leerzeichen.Feld Alignment
spezifiziert eine Speicherausrichtung, bezogen auf den „1.Search Strg“.Es werden folgende Ausrichtungs-Typen unterstützt:
B
H
W
D
PBytegrenze
Halbwortgrenze
Wortgrenze
Doppelwortgrenze
SeitengrenzeVoreingestellt ist das Format H.
Seitengrenze (P) bedeutet in der Regel, dass die Suche auf 4-KB-Grenze ausgerichtet wird. Die einzige Ausnahme stellt die Suche in Objekten dar, die als PAM-Dateien geöffnet wurden. In diesem Falle wird auf 2-KB-Grenze gesucht.
Spezifikation der Ausgabe bei der FIND-Funktion
Über das Feld „Output Area“ wird das Ausgabemedium festgelegt. Standardmäßig erfolgt die Ausgabe am Bildschirm und in das gleiche Diagnosefenster wie die Eingabe. Über das Feld „Number of Hits“ wird die maximale Anzahl der Treffer für einen Suchlauf eingestellt und „Count only“ legt fest, ob die Trefferliste ausgegeben werden soll oder nur die Anzahl der Treffer. Das Format der Ausgabe ist über das „Modus-Feld“ in der Kopfzeile wählbar.
Feld Output Area
spezifiziert das Ausgabemedium.Es werden folgende Ausgabemedien unterstützt:
*SYSOUT
<filename>
*SYSLST
*EDTBildschirm, gleiches Diagnosefenster wie bei der Eingabe
Datei
Systemdatei *SYSLST
EDT-Fenster, das zuletzt verwendet wurde, bzw. EDT-Fenster 0Voreingestellt ist *SYSOUT.
Feld Number of Hits
spezifiziert die maximale Anzahl der Treffer, nach denen die Suche unterbrochen und die gefundenen Treffer ausgegeben werden sollen. Die Treffer werden als Dezimalwert eingegeben. Die maximale Anzahl von ausgegebenen Treffern ist eingeschränkt durch die Größe des Ausgabefensters.Feld Count only
spezifiziert, ob die Trefferliste ausgegeben werden soll oder nur die Anzahl der Treffer.Es werden folgende Angaben unterstützt:
N
YTrefferliste
nur Anzahl gefundener TrefferVoreingestellt ist Count only=N, d.h. die Ausgabe der Trefferliste.
Feld Modus in der Kopfzeile
Es werden folgende Ausgabeformate unterstützt:
D(MP)
C(HR)
H(EX)normales Dump-Format
Zeichen-Format
Sedezimal-FormatVoreingestellt ist das Format D(MP).
Das Ausgabeformat kann im Auswahl- und im Ausgabefenster eingegeben werden.
Ausgabefenster der FIND-Funktion
Nach dem Starten der FIND-Funktion mit Output Area = *SYSOUT (dies ist Voreinstellung) werden im gleichen Diagnosefenster die Treffer ausgegeben. Wurde ein Suchbegriff angegeben, wird für jeden Treffer eine Zeile ausgegeben; wurden zwei Suchbegriffe angegeben, so belegt ein Treffer zwei Zeilen, wobei in der jeweils zweiten Zeile der „Offset“ der Ausgabe vorangestellt ist.
Bild 55: FIND-Ausgabefenster (bei der Suche mit zwei Suchbegriffen)
Die Suche wird unterbrochen, wenn das Fenster gemäß der aktuellen Fensterlänge ganz mit Trefferzeilen gefüllt ist oder die im Eingabefeld „Number of Hits“ eingegebene maximale Anzahl von Treffern erreicht ist. Sie kann dann mit +/
fortgesetzt oder mit - / abgebrochen werden.Zudem kann durch
mit anschließendem /INFORM-PROGRAM MSG='*CANCEL' ein Abbruch der Stringsuche erzwungen werden. Es werden dann die bisher gefundenen Treffer angezeigt.Umfasst der Suchbereich Seiten, die nicht im Diagnoseobjekt enthalten sind, so wird dies durch Meldungen angezeigt, die Suche wird aber nicht abgebrochen.
Die Adresse des gefundenen Suchmusters kann in jeder Trefferzeile markiert und der Speicherbereich in einem Dumpfenster ausgegeben werden, siehe Abschnitt „Markieren" (Diagnosefenster verändern).
In den Ausgabemodi D und HEX sind im Ausgabebereich die einzelnen Wörter markierbar und können als Anfangsadressen den einzelnen Dumpfenstern zugeordnet werden.