trcfmt File Format
Zweck
Speichert Tracevorlagen.
Beschreibung
Der Befehl Trcrpt , der Traceberichte formatiert, verwendet Tracevorlagen, um festzulegen, wie die in Traceeinträgen enthaltenen Daten formatiert werden sollen. Alle Tracevorlagen werden in der Mastervorlagendatei /etc/trcfmtgespeichert. Tracevorlagen geben die Trace-Hook-ID, die Versions-und Releasenummer, die Einrückungsstufe, die Ereignisbezeichnung und Datenbeschreibungsfelder an. Die Datenbeschreibungsfelder enthalten Formatierungsinformationen für die Traceeintragsdaten und können so oft wiederholt werden, wie es zum Formatieren aller Tracedaten im Traceeintrag erforderlich ist.
Diese Datei ändern
Die Datei Trcfmt sollte nur mit dem Befehl Trcupdate geändert werden. Trace-Hooks mit Werten kleiner als 010 werden von den Tracefunktionen intern verwendet. Wenn diese Hooks geändert werden, ist die Leistung des Trace, insbesondere Trcrpt, unvorhersehbar.
Traceeinträge
- Ein Hookwort, das eine Trace-Hook-ID und den Hooktyp oder die Hookgröße enthält.
- Eine variable Anzahl von Wörtern von Tracedaten
- Eine Zeitmarke.
Die Organisation des Hookworts hängt davon ab, ob die Anwendung, die das Hookwort erzeugt, eine 32-Bit-Anwendung oder eine 64-Bit-Anwendung ist.
32-Bit-Trace-Hook-Wörter:
| Element | Beschreibung |
|---|---|
| HookWord | Die ersten beiden Byte eines HookWord enthalten die HookID und HookType. Der Inhalt der zweiten beiden Byte hängt vom Wert von HookTypeab. |
| HookID | Die HookID wird im Traceeintrag als 3 Hexadezimalziffern dargestellt. Bei Benutzerprogrammen kann die Hook-ID ein Wert sein, der von0x010in0x0FFHookID s sind in der /usr/include/sys/trchkid.h Datei definiert. |
| HookType | Der HookType ist ein 4-Bit-Wert, der das Format des restlichen Traceeintrags angibt. Sie geben den HookType an, wenn Sie den Traceeintrag aufzeichnen.
|
64-Bit-Trace-Hook-Wörter:
| Element | Beschreibung |
|---|---|
| HookWord | Die ersten beiden Byte eines HookWord enthalten interne Trace-Metadaten. Die zweiten beiden Byte enthalten die Größe des Traceeintrags abzüglich des Hookworts und aller internen Daten (z. B. Zeitmarken oder CPU-ID). Die dritten beiden Byte enthalten die Hook-ID, die die vollständigen zwei Byte verwenden kann. Eine 12-Bit-Hook-ID, die in einer 32-Bit-Anwendung des Formulars gültig ist0xhhhentspricht der 16-Bit-Hook-ID0xhhh0in einer 64-Bit-Anwendung. Die letzten beiden Byte stellen die Subhook-ID dar. |
| HookID | Die HookID wird im Traceeintrag als drei oder vier Hexadezimalziffern dargestellt. Vierstellige Hook-IDs sind nur in AIX® 6.1 und höheren Releases gültig. Für Releases vor AIX 6.1kann die Hook-ID einen Wert von0x010in0xFFF. Für Benutzerprogramme in AIX 6.1 und höheren Releases kann die Hook-ID einen Wert von0x0100in0xFFFFIst die erste Hexadezimalziffer jedoch Null, muss auch die letzte Ziffer Null sein. Beispiel: HookID0AA0ist legal, aber0AAAist nicht. Viele AIX -Systemhook-IDs sind in der Datei /usr/include/sys/trchkid.h definiert. |
Datenzeiger
Der Datenzeiger ist ein Zeiger auf die aktuelle Position im Trace-Eintrag. Der Datenzeiger wird von Trcrpt geändert, da er die Schablone interpretiert und den Traceeintrag formatiert. Die Anfangsposition von DATA POINTER ist das dritte Byte von HookWord für HookTypes 1, 9, 2, A, 6,undEund das erste Byte nach dem HookWord für HookTypes 0und8.
Tracedatenformatierung
Einrückungsstufe
Die formatierten Tracedaten werden in Spalten ausgerichtet, die der Quelle des Traceereignisses entsprechen. Dies wird in jeder Vorlage mit dem L =X -Deskriptor angegeben. Die gültigen Werte für den Befehl L =X lauten wie folgt:
| Element | Beschreibung |
|---|---|
| L = ANWENDUNG | Gibt die Tracedaten in der Spalte APPL (Anwendung) aus. |
| L=SVC | Gibt die Tracedaten in der SVC-Spalte (Systemaufruf) aus. |
| L=KERN | Gibt die Tracedaten in der Spalte KERN (Kernel) aus. |
| L=INT | Gibt die Tracedaten in der Spalte INT (Unterbrechung) aus. |
Fortsetzungszeichen
Ein Backslash (\) am Ende einer Zeile muss verwendet werden, um eine Vorlage in der nächsten Zeile fortzusetzen.
Bezeichnungen oder Textzeichenfolgen
Einzelne Zeichenfolgen (oder Bezeichnungen) können durch eine beliebige Anzahl von Leerzeichen oder Tabulatoren getrennt werden, aber alle überschüssigen Abstände werden im Tracebericht auf ein Leerzeichen komprimiert, sofern keine anderen Formatstrukturen wirksam werden. Bezeichnungen werden in Anführungszeichen ("") eingeschlossen.
| Element | Beschreibung |
|---|---|
| \n | Gibt eine neue Zeile aus. Die Daten in der neuen Zeile werden entsprechend dem Wert, der in der Einrückungsstufe festgelegt ist, linksbündig ausgerichtet. |
| \t | Fügt eine Registerkarte ein. Tabulatoren werden mit einem festen Tabulatorabstand von 8 auf Leerzeichen erweitert. |
Formatcodes
DATA POINTER Positionsformatcodes
| Element | Beschreibung |
|---|---|
| G m.n | Setzt DATA POINTER auf byte.bit location m.n. |
| O m.n | Erweitert DATA POINTER um m.n byte.bits. |
| M | Verringert den Datenzeiger um M Byte. |
Ausgabeformatcodes
| Element | Beschreibung |
|---|---|
| B m.n | Sendet die Ausgabe im Binärformat, wobei M die Länge der Daten in Byte und N die Länge in Bit ist. Im Gegensatz zu den anderen Druckformatcodes kann der DATA POINTER bitorientiert sein und wird nicht auf die nächste Bytegrenze aufgerundet. |
| D2, D4 , D8 | Konvertiert Daten in das Dezimalformat mit Vorzeichen. Die Länge der Daten beträgt zwei, vier oder acht Byte und der Datenzeiger (DATA POINTER) wird um dieselbe Anzahl Byte erweitert. |
| F4 | Konvertiert Daten in das Gleitkommaformat des C-Typs 'float'. Die Länge der Daten beträgt 4 Bytes, und der DATA POINTER wird um 4 Bytes erweitert. |
| F8 | Konvertiert Daten in das Gleitkommaformat des C-Typs 'double'. Die Länge der Daten beträgt 8 Byte und der Datenzeiger wird um 8 Byte erweitert. |
| S1, S2, S4 | Richtet ASCII-Zeichenfolgen linksbündig aus. Die Länge der Zeichenfolge liegt im ersten Byte (Halbwort, Wort) der Daten. Die Länge der Zeichenfolge enthält dieses Byte nicht. |
| T4 | Gibt die nächsten 4 Byte als Datums-und Uhrzeitzeichenfolge aus |
| U2, U4 , U8 | Konvertiert Daten in das Dezimalformat ohne Vorzeichen. Die Länge der Daten beträgt zwei, vier oder acht Byte und der Datenzeiger (DATA POINTER) wird um dieselbe Anzahl Byte erweitert. |
| M | Konvertiert Daten in das Hexadezimalformat. Der Datenzeiger wird um M Byte erweitert. |
Interpreterformatcodes
| Element | Beschreibung |
|---|---|
| E1, E2, E4 | Gibt das nächste Byte (Halbwort, Wort) als 'errno' -Wert aus und ersetzt den numerischen Code durch den entsprechenden #define -Namen in der Datei /usr/include/sys/errno.h . Der Datenzeiger wird um 1, 2 oder 4 Byte erweitert. |
| P4 | Verwendet das nächste Wort als Prozess-ID und gibt den Pfadnamen der ausführbaren Datei mit dieser Prozess-ID aus. Prozess-IDs und ihre Pfadnamen werden vom Trace -Befehl am Anfang eines Trace und vom Trcrpt -Befehl über einen speziellen EXEC-Trace angefordert. Der Datenzeiger wird um 4 Byte erweitert. |
Switch-Anweisungen
Eine SWITCH-Anweisung ist ein Formatcode gefolgt von einem Komma. Jeder CASE -Eintrag der SWITCH-Anweisung besteht aus:
- A 'MatchValue' mit einem Typ (in der Regel numerisch), der dem Formatcode entspricht.
- Eine einfache 'Zeichenfolge ' ' oder eine neue 'Deskriptor ' , die durch geschweifte Klammern begrenzt wird Ein Deskriptor ist eine Folge von Formatcodes, Zeichenfolgen, Schaltern und Schleifen.
- Ein Komma als Trennzeichen.
Der Schalter wird durch einen Eintrag CASE ohne Komma als Trennzeichen beendet. Der Eintrag CASE wird als erster Eintrag ausgewählt, dessen MatchValue der Erweiterung des Formatcodes entspricht. Der spezielle matchvalue '\ *' ist ein Platzhalter und stimmt mit allen anderen überein.
Der Datenzeiger wird durch den Formatcode erweitert.
LOOP-Anweisungen
Schleifen werden verwendet, um Binärpuffer von Daten auszugeben. Daher ist der Deskriptor für einen LOOP normalerweise X0 oder X1. Die Syntax einer Schleife ist LOOP format_code {descriptor}. Der Deskriptor wird N Mal ausgeführt, wobei N der numerische Wert des Formatcodes ist.
Der Datenzeiger wird durch den Formatcode und durch die Operationen des Deskriptors erweitert.
Makros
Makros sind temporäre Variablen, die wie Shellvariablen funktionieren. Ihnen wird ein Wert mit der Syntax zugeordnet:
{{ $xxx = EXPR }}Dabei ist EXPR eine Kombination aus Formatcodes, Makros und Konstanten. Die Operatoren + (Addition),-(Subtraktion),/(Division) und * (Multiplikation). sind in Makros zulässig.
Vordefinierte Makros
| Makroname | Beschreibung |
|---|---|
| $BASISZEIGER | Markiert den Anfangsoffset in einem Ereignis. Der Standardwert ist0, aber der tatsächliche Offset ist die Summe der Werte von DATA POINTER und BASE_POINTER. Sie wird mit Schablonensubroutinen verwendet, wenn die Teile eines Ereignisses dieselbe Struktur haben und von derselben Schablone gedruckt werden können, aber unterschiedliche Ausgangspunkte in einem Ereignis haben können. |
| $GRUWE | Beendet das aktuelle Traceereignis. |
| $D1 - $D5 | Datenwort 1 bis Datenwort 5. Der Datenzeiger wird nicht versetzt. |
| $DATENZEIGER | Aktiviert den Datenzeiger. Sie kann wie andere Benutzermakros festgelegt und bearbeitet werden. |
| $STANDARD | Verwendet die Standardschablone 008. |
| $FEHLER | Gibt eine Fehlernachricht an den Bericht aus und beendet die Vorlage, nachdem der aktuelle Deskriptor verarbeitet wurde. Die Fehlernachricht enthält die Protokolldatei, die relative Position der Protokolldatei am Anfang dieses Ereignisses und die Trace-ID. |
| $EXECPFAD | Gibt den Pfadnamen der ausführbaren Datei für den aktuellen Prozess aus |
| HB | Anzahl der Byte im Puffer mit variabler Länge der Trcgen -Subroutine. Dies entspricht auch den 16-Bit-Hook-Daten. |
| $HD | Hook-Daten (untere 16 Bit) |
| $HTCity in Thailand | Ermöglicht mehrere unterschiedliche Trchook -Subroutinenaufrufe mit derselben Schablone. Die Rückgabewerte des Makros $HTCity in Thailand sind:
Der Datenzeiger wird nicht geändert. |
| $L1-$L2 | Long (64 Bit) Datenwort 1 oder 2. Beispielsweise ist $L1 die Konkatination von $d1 und $d2. Die 64-Bit-Werte wurden wahrscheinlich mit den Makros TRCHK64L1 oder TRCHK64L2 verfolgt. Keine Änderung am Datenzeiger. |
| $LOGID0 | Aktueller Protokolldateioffset am Anfang des Ereignisses. |
| $LOGIDX (Anmelde-ID) | Aktuelle relative Position der Protokolldatei in diesem Ereignis |
| $LOGDATEI | Gibt den Namen der verarbeiteten Protokolldatei zurück. |
| $MCR0, $MCR1, $MCRA | Maschinen-MCR-Register 0, 1 und A. |
| $PID | Gibt die aktuelle Prozess-ID aus. |
| $PMC1 - $PMC8 | Maschine PMC registriert 1 bis 8. |
| $PURR | PURR-Register der Maschine. |
| $RELLINENO | Zeilennummer für dieses Ereignis Die erste Zeile beginnt bei 1. |
| $SKIP | Beendet das aktuelle Traceereignis ohne Drucken. |
| $STOP | Beendet sofort einen Tracebericht. |
| $SVC | Gibt den Namen des aktuellen Systemaufrufs aus. |
| $TID | Gibt die aktuelle Kernel-Thread-ID aus |
| $TRACEID | Gibt die Trace-ID des aktuellen Ereignisses zurück. |
Integrierte Makros
Die integrierten Makros sind:
| Element | Beschreibung |
|---|---|
| Bufto-Dateiname (bp) | Sucht den Dateinamen nach buf struct. |
| fdinstall () | Installiert den Dateideskriptor und den aktuellen V-Knoten aus lookuppn als Dateibeschreibung/V-Knotenpaar für diese Prozess-ID. |
| fdtodateiname () | Sucht den Dateinamen für den angegebenen Dateideskriptor für diese Prozess-ID. Wird der Dateiname nicht gefunden, wird nichts ausgegeben. |
| Flih () | Verschiebt die Unterbrechungstiefe. |
| lookuppninstall1 | Installiert den Dateinamen als aktuelle Datei mit dem Befehl Trcrpt . |
| lookuppninstall2 | Installieren Sie den V-Knoten als aktuellen V-Knoten. Außerdem wird die Datei current_v-node/current_file als v-node/filename par installiert. |
| pfsrdwrinstall1 (vp) | Setzt den aktuellen V-Knoten dieses Prozesses auf vp. |
| pfsrdwrinstall2 (VA.S, Anzahl) | Erstellt eine virtuelle Adress-/V-Knotenstruktur, die als VMM-Hooks ausgefüllt werden soll, wenn eine Fehlseitenbedingung auftritt |
| Fortsetzen () | Verringert die Interrupttiefe. |
| setdelim () | Verhindert Leerzeichen zwischen Zeichen. |
| slihlookup () | Sucht den Interrupt-Handler der zweiten Ebene. |
| sidtofilename (Sid) | Sucht den Dateinamen nach Segment-ID. |
| vmbufinstall () | Sucht den v-node der Datei über die virtuelle Seite/sid und installiert den v-node und buf als v-node/bp-Paar. Dies wird von lvm auf down verwendet. |
| v-Knoten-Dateiname (vp) | Sucht nach Dateinamen nach V-Knoten. |
| vpagetofilename (vpage, sid) | Sucht Dateinamen nach vpage und Segment-ID. |
Dateien
| Element | Beschreibung |
|---|---|
| /etc/trcfmt | Speichert Tracevorlagen. |
| /usr/include/sys/trchkid.h | Definiert Hook-IDs |
| /usr/include/sys/trcmacros.h | Definiert Trace-Makros. |