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