Museum

Home

Lab Overview

Retrotechnology Articles

Online Manuals

⇒ ikdb.wx200r(8) — Reliant UNIX 5.44c4

Media Vault

Software Library

Restoration Projects

Artifacts Sought

ikdb(8)                         (Nur RM400)                         ikdb(8)

NAME
     ikdb - Systemkerninternes Fehlersuchprogramm (Debugger)

SYNTAX
     cmd [parameters]

BESCHREIBUNG
     ikdb ist eine optionale Funktion, die in den Systemkern eingebunden
     werden kann und dann in der Systemkernumgebung ausgeführt wird. Der
     Debugger sollte schon in der Anfangsphase beim Hochfahren eines
     Systems im Systemkern konfiguriert werden, damit er den Benutzer bei
     der Diagnose von Problemen mit dem System unterstützen kann. Sobald
     das System stabil läuft, kann der Debugger wieder aus dem Systemkern
     entfernt werden, um Speicherkapazität zu sparen.

     Zum Konfigurieren bzw. Entfernen des Debuggers wird die Datei
     /etc/conf/sdevice.d/ikdb folgendermaßen geändert:

               ikdb    Y    1    0    0    0    0    0    0    0

     Das zweite Feld (Y oder N) ist der Konfigurationsparameter. Hat er den
     Wert Y, wird der Debugger in den Systemkern eingebunden. Enthält die-
     ses Feld den Wert N, so wird der Debugger nicht im Systemkern konfigu-
     riert.

     Diese Konfiguration wird erst beim nächsten Aufbau des Systemkerns
     wirksam.

     ikdb kann auf verschiedene Weise aufgerufen werden:

     1. ikdb wird an mehreren neuralgischen Punkten des Systemkern-Codes
        aufgerufen:

        a) In einer möglichst frühen Phase des Startprozesses. Dies kann
           aktiviert werden, indem die Boot-Optionen auf 0x20 gesetzt wer-
           den.

        b) Während der Ausführung eines exec-Systemaufrufs unmittelbar vor
           der Eingabe des Benutzer-Codes. Dies kann mit den ikdb-Kommandos
           on/off aktiviert/deaktiviert werden.

        c) Von panic aus, um eine Analyse nach einem Systemabsturz zu
           ermöglichen. Dies kann deaktiviert werden, indem die Boot-
           Optionen auf 0x10 gesetzt werden.

     2. ikdb kann durch Drücken des "debug button" asynchron aufgerufen
        werden bzw. durch CTRL-@ IKDB.

     3. ikdb wird an einem bestimmten Haltepunkt aufgerufen, der von ikdb
        eingerichtet worden ist.





Seite 1                      Reliant UNIX 5.44               Gedruckt 11/98

ikdb(8)                         (Nur RM400)                         ikdb(8)

     ikdb kennt einen "aktuellen Prozeß" und einen "aktuellen Stack". Beim
     Aufruf ist der aktuelle Prozeß derjenige Prozeß, für den das System
     gerade arbeitet (d. h. der "Eigentümer" der aktuellen Benutzerstruk-
     tur). Mit den Kommandos ne und cp kann ein anderer Prozeß aktuell
     gemacht werden, so daß derzeit im Wartezustand befindliche Prozesse
     manipuliert werden können. Die Kommandos ne und cp (für Multi-Systeme)
     machen auch den Stack des neuen aktuellen Prozesses zum aktuellen
     Stack.

     ikdb-Kommandos haben folgendes Format:

          command parameters

     Dabei ist command ein Kommando (siehe unten), und parameters sind
     Parameter oder Optionen, die für das Kommando angegeben werden können.
     Wenn mehrere Parameter in eckige Klammern ([ ]) eingeschlossen sind,
     sind diese optional, d. h. null oder mehr Parameter können angegeben
     werden. Wenn mehrere Parameter in geschweifte Klammern ({ }) einge-
     schlossen sind, muß genau ein Parameter angegeben werden. Bei den mei-
     sten Kommandos wird die Ausgabe nach jeweils 20 Zeilen angehalten, um
     dem Benutzer die Möglichkeit zum Beenden des Kommandos zu geben. Mit
     der Korrekturtaste wird das zuletzt eingegebene Zeichen gelöscht, mit
     den Tasten CTRL-U wird die gesamte Kommandozeile gelöscht.

   Numerische Ausdrücke

     Numerische Ausdrücke haben eine zur Programmiersprache C kompatible
     Syntax und bestehen aus beliebigen Kombinationen numerischer Zeichen-
     ketten, Systemkernvariablen und arithmetischer Operatoren (+ - * / < >
     & | ^ ~). Die arithmetischen Operatoren haben dieselbe Funktion wie in
     der Sprache C. Zusätzlich gibt es den Operator @ zur Angabe des Werts,
     der auf einer bestimmten virtuellen Adresse gefunden wird. Ein in
     eckige Klammern eingeschlossener numerischer Ausdruck ([expression])
     hat dieselbe Wirkung wie der indirekte Adressierungsoperator * in C.

     Die Ausdrücke werden von links nach rechts und mit derselben Priorität
     der Operatoren wie in C ausgewertet. Die Reihenfolge der Auswertung
     kann außerdem durch Klammern gesteuert werden. Indirekte Adressen kön-
     nen mit weiteren indirekten Adressen geschachtelt werden, um mehrstu-
     fige indirekte Adressen zu erzielen.

     Numerische Konstanten werden als Zahlen mit der Basis 16 ausgewertet,
     es sei denn, ihnen ist das Präfix 0b für Binärzahlen (Basis 2), 0 oder
     0o für Oktalzahlen (Basis 8), 0t für Dezimalzahlen (Basis 10) oder 0x
     für Hexadezimalzahlen (Basis 16) vorangestellt. Die Standardbasis kann
     ebenfalls mit dem Kommando cb geändert werden.








Seite 2                      Reliant UNIX 5.44               Gedruckt 11/98

ikdb(8)                         (Nur RM400)                         ikdb(8)

   Symbolische Adressen

     In jedem numerischen Ausdruck können globale Systemkernsymbole zur
     Angabe der Adresse enthalten sein, die der Variablen oder dem Proze-
     durnamen zugeordnet ist. Zur Kennzeichnung der Systemkernsymbole wird
     dem Symbolnamen ein Unterstrich () vorangestellt.

SYNTAX UND FUNKTION DER KOMMANDOS
   Kommandos zur Anzeige/Änderung des Speicherinhalts

     da [{address | n | l} [count]]
     dc [{address | n | l} [count]]
     dh [{address | n | l} [count]]
     dl [{address | n | l} [count]]
          Wenn count negativ ist, wird der Speicherinhalt rückwärts von
          address an angezeigt.

     ds [{address | n | l} [count]]
          Der Speicherinhalt wird in ASCII-Format (da), als disassemblier-
          ter Code (dc), im Hexadezimalformat (dh), als Systemkernsymbole
          (dl) oder als Zeichenkette (ds) ausgegeben. Hierbei handelt es
          sich einfach um Ersatzkommandos für sm.

     ma [{-b | -h | -w}] [address [[value]]
     put [{-b | -h | -w}] [address [[value]]
          Mit dem Kommando ma (modify address) bzw. put wird der Speicher-
          inhalt auf der angegebenen Speicheradresse geändert. address ist
          ein numerischer Ausdruck, dessen Ergebnis die zu ändernde Adresse
          ist (im Speicher oder die genaue Position). Die Option -b, -h
          oder -l gibt den Werttyp als Byte, Halbwort oder Wort an. Wird
          der numerische Ausdruck value angegeben, so wird das Ergebnis auf
          die Speicheradresse geschrieben.






















Seite 3                      Reliant UNIX 5.44               Gedruckt 11/98

ikdb(8)                         (Nur RM400)                         ikdb(8)

          Wird kein Wert angegeben, wird ein interaktiver Speichereditor
          aufgerufen. Dieser ähnelt dem im Kommando mm verwendeten Editor,
          allerdings wird die durch address angegebene Position nicht gele-
          sen.

          ma und put sind speziell dazu gedacht, die Funktion des Kommandos
          mm auf "memory-mapped-io"-Adressen auszuführen.

     mm [{address | n | l} [value]]
          Mit dem Kommando mm (modify memory) wird der Speicherinhalt auf
          der angegebenen Speicheradresse geändert. address ist ein numeri-
          scher Ausdruck, dessen Ergebnis die Adresse der zu ändernden
          Speicherstelle ist. Wird die Adresse mit n oder l angegeben, so
          hat dies dieselbe Bedeutung wie bei den Anzeigekommandos. Wird
          der numerische Ausdruck value angegeben, so wird das Ergebnis in
          den Speicher gestellt.

          Wird kein Wert angegeben, so wird ein interaktiver Speichereditor
          aufgerufen. Der Editor zeigt die angegebene Adresse sowie den
          Speicherinhalt auf dieser Adresse an. Zur Änderung des Wertes
          genügt die Eingabe eines neuen Wertes. Der Editor zeigt dann die
          nächste Adresse mit dem zugehörigen Speicherinhalt an. Zum Been-
          den des Prozesses geben Sie für den Wert einen Punkt (".") ein.
          Wenn für den Wert ein Bindestrich ("-") eingegeben wird, wird die
          Adresse zurückgezählt und der Editierprozeß fortgesetzt. Der
          Speichereditor akzeptiert nur Konstanten; numerische Ausdrücke
          sind nicht zulässig.

     sa [{-b | -h | -w}] [address]
     get [{-b | -h | -w}] [address]
          Das Kommando sa (show address) zeigt den Inhalt der angegebenen
          Speicheradresse in einer der Datenlängen Byte (-b), Wort (-w)
          oder als langen Wert (-l) im Hexadezimalformat an.

          sa und get sind speziell dazu gedacht, die Funktion des Kommandos
          sm auf "memory-mapped-io"-Adressen auszuführen.

     sm [{-a | -i | -l | -s | -x}] [{address |n | l} [count]]
          Das Kommando sm (show memory) zeigt den Inhalt des Speichers im
          ASCII-Format (-a), als disassemblierte Anweisungen (-i), als
          Systemkernsymbole (-l), als Zeichenkette (-s) oder im Hexadezi-
          malformat (-x) an. Mit der Anzeige wird bei der Adresse address
          begonnen und für count Wörter fortgefahren. Wenn address nicht
          angegeben wird, wird die Adresse hinter derjenigen Adresse ver-
          wendet, an der das letzte Anzeigekommando endete. Die Anfangs-
          adresse kann auch relativ zum letzten Anzeigekommando (n oder l)
          angegeben werden. Mit n wird angegeben, daß die nächste Adresse
          verwendet werden soll; dadurch wird die Anzeige genau an der
          Stelle im Speicher fortgesetzt, an der das letzte Anzeigekommando
          endete. Soll die Anfangsadresse des letzten Kommandos erneut
          benutzt werden, so muß die Adresse als l angegeben werden.



Seite 4                      Reliant UNIX 5.44               Gedruckt 11/98

ikdb(8)                         (Nur RM400)                         ikdb(8)

          Wird der Parameter count nicht angegeben, so wird standardmäßig
          der Wert 4 angenommen. Bei Verwendung des Zeichenkettenformats
          wird die Anzeige beendet, sobald count erreicht ist oder ein
          NULL-Zeichen angetroffen wird. Wenn der Parameter count bei Ver-
          wendung des Zeichenkettenformats überhaupt nicht oder mit dem
          Wert 0 angegeben wurde, werden so lange Speicherinhalte ange-
          zeigt, bis ein NULL-Zeichen angetroffen wird.

     un   Hiermit wird das letzte Kommando zum Ändern des Speicherinhalts
          (mm) rückgängig gemacht. Eine Änderung hat eine globale Gültig-
          keitsdauer. Das betroffene mm-Kommando kann z. B. bei einem frü-
          heren Aufruf von ikdb ausgeführt worden sein. Es ist zu beachten,
          daß damit nur die jeweils letzte mit dem Speichereditor vorgenom-
          mene Änderung rückgängig gemacht wird.

   Kommandos zur Anzeige/Änderung des Kontexts

     cp cpu
          Der neue Prozessor cpu wird zu dem Prozessor, auf dem ikdb ausge-
          führt wird. Als Nebeneffekt wird hier zusätzlich der aktuelle
          (und ursprüngliche) Prozeß auf dem neuen Prozessor cpu zum akti-
          ven Prozeß gemacht. Diese Funktion ist nur im Multikern verfüg-
          bar.

     mtf {s | r}
          Dieses Kommando zeigt standardmäßig ein Stack-Protokoll an. Die
          Option s bewirkt, daß ein Stack-Protokoll für alle im Wartezu-
          stand befindlichen Prozesse angezeigt wird. Mit der Option r wird
          ein Stack-Protokoll für alle aktiven Prozesse angezeigt.

     ne [[p] process]
          Die Debugger-Umgebung wird so geändert, daß sie den Status des
          angegebenen Prozesses widerspiegelt. Wird kein Prozeß angegeben,
          kehrt ikdb in seinen ursprünglichen Kontext zurück. process kann
          entweder die Adresse des Prozeßtabelleneintrags oder, wenn die
          Option p angegeben wurde, die Prozeßnummer des neuen Prozesses
          sein.

     regs [-a] [address] [reg[=val]]
          Das Kommando regs zeigt den Inhalt der Register im Prozessor an.
          Mit der Option -a wird der Inhalt vor der letzten "panic"-Meldung
          oder dem letzten Vergewisserungsfehler (assertion error) ange-
          zeigt. Wird eine optionale Adresse address angegeben, so werden
          die Register im Ausnahmerahmen (exception frame) auf der Spei-
          cherstelle angezeigt. Der vollständige Registersatz wird ange-
          zeigt, es sei denn, mit reg wird ein bestimmtes Register angege-
          ben. Wenn der numerische Ausdruck =val angegeben ist, wird der
          Inhalt des angegebenen Registers in val geändert.

     np cpu
          Der Debugger wird auf dem Prozessor cpu ausgeführt. Diese Funk-
          tion ist nur im Multikern verfügbar.


Seite 5                      Reliant UNIX 5.44               Gedruckt 11/98

ikdb(8)                         (Nur RM400)                         ikdb(8)

     sf level
          Das Kommando sf stellt die Register und den Status von ikdb auf
          den angegebenen Stack-Rahmen (Aufrufhierarchie) ein, so daß der
          Eindruck erweckt wird, die Ausführung sei an dieser Stelle unter-
          brochen worden.

     fregs
          Zeigt die Fließkomma-Register an.

     tf [levels] [sp pc]
          Dieses Kommando zeigt ein Ablaufprotokoll der Stack-Rahmen an.
          Für jeden Rahmen auf dem Stack werden der Funktionsname, die
          Befehlsadresse, die ersten vier Parameter sowie die Adresse des
          Stack-Rahmens ausgegeben. Wenn levels angegeben wird, wird die
          Protokollierung lediglich für die angegebene Anzahl von Stack-
          Rahmen durchgeführt; das Ablaufprotokoll wird dann nicht bis zum
          Anfang des Stacks zurückverfolgt. Das Ablaufprotokoll beginnt am
          aktuellen oberen Ende des Stacks, es sei denn, die Parameter sp
          und pc sind angegeben.

   Kommandos zur Manipulation von Haltepunkten und Einzelschrittausführung

     bp [-a] address [count]
          Hiermit wird auf address ein Haltepunkt gesetzt. Wenn address
          sich am Anfang einer Funktion befindet, wird der Haltepunkt am
          Ende der vom Compiler generierten Anweisungspräambel des Basis-
          blocks gesetzt. Dies kann mit der Option -a aufgehoben werden.
          Die Ausführung des Systemkerns wird beendet und ikdb wird neu
          gestartet, nachdem das System count mal auf den Haltepunkt gelau-
          fen ist. count hat standardmäßig den Wert 1.

     B    Listet alle derzeit gesetzten Haltepunkte auf.

     d index
          Löscht den von index angegebenen Haltepunkt, wobei index der dem
          Haltepunkt zugeordnete Index ist, wie er in der Liste der Halte-
          punkte aufgeführt ist (siehe Kommando B).

     D    Löscht alle derzeit gesetzten Haltepunkte.

     so [count]
          Wie das Kommando st, nur werden die Funktionsaufrufe in einem
          einzigen Schritt ausgeführt.

     st [count]
          count (Standardwert 1) Maschinenbefehle ausführen.








Seite 6                      Reliant UNIX 5.44               Gedruckt 11/98

ikdb(8)                         (Nur RM400)                         ikdb(8)

     w [-rw] [-p pattern] [-m mask] [address]
          Werden keine Parameter angegeben, zeigt dieses Kommando den zur
          Zeit aktiven Untersuchungspunkt an. Mit der Option -rw kann ein
          Untersuchungspunkt an der Adresse address zum Lesen (-r), Schrei-
          ben (-w) oder beides angegeben werden. Die Adresse muß im Bereich
          zwischen K0SEG und K1SEG (jeweils einschließlich) liegen.

          Beim Untersuchungspunkt werden Muster für jedes Bit beachtet, das
          mit der Option auf 1 gesetzt wurde. Dieses Bit wird dann mit dem
          entsprechenden Bit in dem Muster verglichen, das mit der Option
          -p angegeben wurde.

     W    Löscht den zur Zeit aktiven Untersuchungspunkt.

   Kommandos zur Anzeige und Steuerung von Prozessen

     fp {p | c | w | s} regexp
          Alle Prozesse suchen und auflisten, die ein bestimmtes Suchkrite-
          rium erfüllen. Das Feld für die Suche wird durch genau einen
          Parameter angegeben: Prozeßnummer (p), Kommando (c), Warteadresse
          (w) oder Prozeß-Status (s). regexp ist ein regulärer Ausdruck,
          mit dem das angegebene Feld verglichen wird. Beispiel:

               fp c ^get

          Mit diesem regulären Ausdruck werden alle Prozesse gesucht und
          aufgelistet, die Kommandos ausführen, deren Namen mit "get"
          beginnen.

     ki [-s] [-sig] [pid]
          Ein Signal an einen Prozeß senden. sig steht gegebenenfalls für
          das zu übermittelnde Signal (Standard: 9). pid steht für den Pro-
          zeß, an den ein Signal gesendet werden soll. Wird pid nicht ange-
          geben, werden an alle Prozesse mit Ausnahme der Systemprozesse
          Signale gesendet. Systemprozesse können nur abgebrochen werden,
          wenn die Option -s angegeben und die Prozeßnummer explizit
          genannt ist.

     lp   Das Kommando lp listet alle im System aktiven Prozesse mit einer
          kurzen Statusbeschreibung auf. Die aktuell auf einer CPU laufen-
          den Prozesse sind hervorgehoben.

     wa wchan
          Warteadresse ausführen. wchan muß angegeben werden; es gibt keine
          Standardeinstellungen.

   Kommandos zur Anzeige von Datenstrukturen

     Mit dieser Kommandogruppe wird der Inhalt von Datenstrukturen ausgege-
     ben. Bei den meisten Kommandos kann die Struktur durch folgende Argu-
     mente angegeben werden:



Seite 7                      Reliant UNIX 5.44               Gedruckt 11/98

ikdb(8)                         (Nur RM400)                         ikdb(8)

          {address | offset}

     Ist address angegeben, so gibt das Kommando den Namen jedes Feldes der
     Struktur (auf acht Stellen verkürzt) und den Wert des Feldes aus. Es
     folgt ein Beispiel für percpu:

     ikdb > percpu c0030000
     c0030000:
     xclbind         0 idleproc c03aa400 lcpunum         1 lcpumask        2
     percpufl        7 runrun          1 kprunrun        0 curpri         4f
     npwakecn        0 dosoftin        1 dotimein        0 dqgen           1
     migrate        0 intrcxt       100 locktestoff     0 lastlock       ff
     locklist [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]
     idleflag        0 backoff         5 idleadj         0 baseprio        0
     fpproc         0 curproc  c0739c00 oldcurp c03aa400 tlbpida       29
     tlbpidg       ca curipl          0 maxqueip        0 iplquema e0118000
     iplfree  c00479ec iplbase  c0004000 unix-tic        1 fasttod        0
     fastoff        0 Izero           0 itmrckp        0 rtodckp        0
     todhid        0 clkspee        0 delaymu      708 icaches        0
     dcaches        0

     Wird offset angegeben, so erscheinen in der Ausgabe der vollständige
     Name jedes Feldes der Struktur, der Offset vom Anfang der Struktur in
     Bytes und ihre Größe in Bytes. Es folgt ein Beispiel für das Kommando
     percpu:

ikdb > percpu offset
member(offset,size)
xclbind(0,4)        idleproc(4,4)       lcpunum(8,1)        lcpumask(c,4)
percpuflags(10,4)   runrun(20,4)        kprunrun(24,4)      curpri(28,4)
npwakecnt(2c,4)     dosoftint(30,4)     dotimein(34,4)      dqgen(38,4)
migratefrom(3c,4)  intrcxt(60,2)       locktestoff(62,1)   lastlock(63,1)
locklist(64,7c)     idleflag(e0,4)      backoff(e4,4)       idleadj(f0,4)
tlbpidassigned(12c,4) tlbpidgen(130,4) curipl(134,4)      maxqueipl(138,4)
iplquemask(13c,4)   iplfree(140,4)      iplbase(144,4)      unixtick(180,4)
fasttodlo(184,4)  ticktodhi(188,4)  ticktodlo(184,4)  showtodhi(190,4)
showtodlo(194,4)  fastoffset(198,4)  Izero(190,4)        itmrckptcnt(1a0,4)
rtodckptcnt(1a4,4) todhidiff(1a8,4) clkspeed(1a4,1)    delaymult(1b0,4)
icachesize(1b4,4)  dcachesize(1b8,4)

     as {address | offset}
          Zeigt den Inhalt einer bestimmten as-Struktur an.

     buf {address | offset}
          Zeigt den Inhalt einer bestimmten buf-Struktur an.

     cg {address | offset}
          Zeigt den Inhalt einer bestimmten cg-Struktur an.

     datab {address | offset}
          Zeigt den Inhalt einer bestimmten datab-Struktur an.



Seite 8                      Reliant UNIX 5.44               Gedruckt 11/98

ikdb(8)                         (Nur RM400)                         ikdb(8)

     fifonode {address | offset}
          Zeigt den Inhalt einer bestimmten fifonode-Struktur an.

     hat {address | offset}
          Zeigt den Inhalt einer bestimmten hat-Struktur an.

     hatdata {address | offset}
          Zeigt den Inhalt einer bestimmten hatdata-Struktur an.

     inode {address | offset}
          Zeigt den Inhalt einer bestimmten inode-Struktur an.

     inpcb {address | offset}
          Zeigt den Inhalt einer bestimmten inpcb-Struktur an.

     msgb {address | offset}
          Zeigt den Inhalt einer bestimmten msgb-Struktur an.

     page {address | offset}
          Zeigt den Inhalt einer bestimmten page-Struktur an.

     percpu {{lcpu | address} | offset}
          Zeigt den Inhalt der percpu-Struktur für einen bestimmten Prozes-
          sor an. Der Prozessor wird entweder über seine logische CPU-
          Nummer (lcpu) oder die Adresse seiner percpu-Struktur (address)
          angegeben. Wenn offset angegeben ist, wird der Offset jedes Fel-
          des in der Struktur wie oben beschrieben ausgegeben.

          Werden keine Argumente angegeben, so gibt dieses Kommando die
          Werte der percpu-Struktur der aktuell aktiven CPU aus (die aktive
          lcpu-Nummer in der Eingabeaufforderung beachten), wobei die Feld-
          namen der Struktur auf acht Zeichen verkürzt werden.

     pp {{pid | address} | offset}
          Zeigt den Inhalt der proc-Struktur eines bestimmten Prozesses in
          logischer Reihenfolge an. Der Prozeß wird entweder über seine
          Prozeßnummer (pid) oder die Adresse seines Eintrags in der Pro-
          zeßtabelle (address) angegeben.

     ppa {{pid | address} | offset}
          Zeigt den Inhalt der proc-Struktur eines bestimmten Prozesses in
          alphabetischer Reihenfolge an. Der Prozeß wird entweder über
          seine Prozeßnummer (pid) oder die Adresse seines Eintrags in der
          Prozeßtabelle (address) angegeben. Wenn offset angegeben ist,
          wird der Offset der einzelnen Felder in der Struktur ausgegeben.

     queue {address | offset}
          Zeigt den Inhalt einer bestimmten queue-Struktur an.

     seg {address | offset}
          Zeigt den Inhalt einer bestimmten seg-Struktur an.



Seite 9                      Reliant UNIX 5.44               Gedruckt 11/98

ikdb(8)                         (Nur RM400)                         ikdb(8)

     snode {address | offset}
          Zeigt den Inhalt einer bestimmten snode-Struktur an.

     stream {address | offset}
          Zeigt den Inhalt einer bestimmten stream-Struktur an.

     tcpcb {address | offset}
          Zeigt den Inhalt einer bestimmten tcpcb-Struktur an.

     var [offset]
          Zeigt den Inhalt der var-Struktur (v) an.

     vnode {address | offset}
          Zeigt den Inhalt einer bestimmten vnode-Struktur an.

   Kommandos zur Umsetzung virtueller Speicheradressen

     pt address
          Zeigt die Umsetzungsinformationen an, die der angegebenen virtu-
          ellen Adresse zugeordnet sind. Hierzu gehören sowohl die physi-
          sche Adresse als auch die Zugriffsberechtigungen aus den Daten-
          strukturen des Systemkerns und des Hardware-TLB (Translation Loo-
          kaside Buffer).

     td [-c] [index ...]
          Zeigt den Inhalt des TLB (Translation Lookaside Buffer) an. Nach
          dem Starten von ikdb wird der Inhalt des TLB abgespeichert und
          für dieses Kommando benutzt. Soll der aktuelle Inhalt des TLB
          benutzt werden, muß die Option -c angegeben werden. Soll ein
          Speicherabzug von bestimmten TLB-Speicherstellen erzeugt werden,
          müssen die Indizes der betreffenden Speicherstellen angegeben
          werden.

     vtop proc vaddr
          Zeigt die Schritte der Umsetzung von der virtuellen in die physi-
          sche Speicheradresse für das Adreßpaar proc vaddr an.

   Verschiedene Kommandos

     call func ([parameter [, parameter] ...])
          Ruft eine bestimmte Systemkernfunktion mit den angegebenen Para-
          metern auf. Es können bis zu sechs Parameter übergeben werden,
          die ausschließlich numerische Ausdrücke sein müssen. Zeichenket-
          tenkonstanten sind nicht zulässig. Der Rückgabewert dieser Funk-
          tion wird ausgegeben.

     cb newbase
          Ändert die Standardbasis, die von der Ausdrucksauswertungsroutine
          bei der Auswertung numerischer Konstanten zugrundegelegt wird, in
          newbase. (Dabei muß newbase unbedingt mit der aktuellen Basis
          angegeben werden.)



Seite 10                     Reliant UNIX 5.44               Gedruckt 11/98

ikdb(8)                         (Nur RM400)                         ikdb(8)

     echo [parameter ...]
          Gibt die in der Kommandozeile angegebenen Parameter aus.

     ex oder q
          Beendet den Debugger und setzt die Ausführung des Systemkerns an
          der Stelle fort, an der der Debugger aufgerufen wurde.

     lck  Zeigt alle Speren an, die zur Zeit von der CPU gesetzt sind.

     ll1 [start] link value offset, offset ...
          Zeigt eine verknüpfte Liste ab der in start angegebenen Adresse
          an; link gibt den Offset zu dem Zeiger auf den nächsten Knoten
          an; value gibt den Endwert der verknüpften Liste an. Für jeden
          Knoten können bis zu fünf Felder angezeigt werden, und offset
          listet den Offset-Wert ab der Anfangsadresse auf.

     ll2 [start] link value lowbound highbound
          Zeigt eine verknüpfte Liste ab der in start angegebenen Adresse
          an; link gibt den Offset zu dem Zeiger auf den nächsten Knoten
          an; value gibt den Endwert für die verknüpfte Liste an. Sind
          lowbound und highbound angegeben, wird bei jedem Knoten eine
          Grenzwertprüfung durchgeführt.

     more [value]
          Setzt die "more"-Funktion des Debuggers auf value. Ist value =
          Null, wird "more" ausgeschaltet. Andernfalls gibt value die
          Anzahl der Zeilen auf einer Seite an.

     na {symbol | address}
          Gibt die numerischen und symbolischen Werte des numerischen Aus-
          drucks in der Kommandozeile aus.

     pa   Das System wird zur Ausgabe einer "panic"-Meldung nach Beendigung
          von ikdb gezwungen.

     S {symbol | address}
          Gibt die numerischen und symbolischen Werte des numerischen Aus-
          drucks in der Kommandozeile aus.

     set [flag {on | off}]
          Aktiviert bzw. deaktiviert einen angegebenen internen ikdb-Para-
          meter. Sind keine Argumente angegeben, so wird die Liste der ver-
          fügbaren Parameter ausgegeben.

     val number
          Zeigt den Inhalt des numerischen Ausdrucks number als Hexadezima-
          lem, Dezimalzahl, Dezimalzahl ohne Vorzeichen und Oktanzahl an.

     ?    Gibt die Kommandos, die vom Debugger interpretiert werden können,
          mit einer kurzen Beschreibung aus.




Seite 11                     Reliant UNIX 5.44               Gedruckt 11/98

ikdb(8)                         (Nur RM400)                         ikdb(8)

DIAGNOSE
     Die selbsterklärenden Diagnosemeldungen weisen auf Fehler in der Kom-
     mandozeile oder Probleme bei der Kommandoausführung hin.



















































Seite 12                     Reliant UNIX 5.44               Gedruckt 11/98

Typewritten Software • bear@typewritten.org • Edmonds, WA 98026