Displays system images for examining a dump.
kdb [ SystemImageFile [ KernelFile]]
The kdb command is an interactive utility for examing an operating system image or the running kernel. The kdb command interprets and formats control structures in the system and provides miscellaneous functions for examining a dump.
The SystemImageFile parameter specifies the file that contains the system image. The default SystemImageFile is /dev/mem. The KernelFile parameter contains the kernel symbol definitions. The default for the KernelFile is /usr/lib/boot/unix.
Root permissions are required for execution of the kdb command on the active system. This is required because the special file /dev/mem is used. To run the kdb command on the active system, enter:
kdb
To invoke the kdb command on a system image file, enter:
kdb SystemImageFile
where SystemImageFile is either a file name or the name of the dump device. When invoked to view data from a SystemImageFile the kdb command sets the default thread to the thread running at the time the SystemImageFile was created.
Notes:
- When using the kdb command a kernel file must be available.
- Stack tracing of the current process on a running system does not work
The following table describes the most common argument types referenced in the subcommand syntax diagrams that follow.
Argument | |
* | A wildcard used to select all entries. |
count | A hex constant specifying the number of times to perform a specific operation. |
cpu | A decimal value specifying a cpu number in a SMP machine. |
eaddr | Effective address. This may be a hex contstant or an expression. |
paddr | A physical address. |
pid | A hex constant or expression specifying a process ID. |
selection | Indicates that a menu is displayed from which a selection must be made. |
slot | A decimal constant specifying a slot number within a table. |
symb | A symbolic reference to a value. Symbols from the kernel and/or kernel extensions may be used. |
tid | A hex constant or expression specifying a thread ID. |
tslot | A decimal constant specifying a slot number within the thread table. |
The following lists the subcommands available within the kdb command. Refer to the Subcommands for the KDB Kernel Debugger and kdb Command in the AIX Version 4.3 Kernel Extensions and Device Support Programming Concepts for more detailed information, including examples, on the subcommands. The following subcommand descriptions are grouped into the functional sets:
h | |
Display a list of commands with short descriptions. | |
his [?] [count] | |
The hist command prints history commands. | |
e | |
Exits from the kdb command. This is also recognized by the e subcommand alias. | |
set [toggle|count] | |
The setup subcommand lists and manipulates kdb toggles. | |
f [+x|-x][tslot | eaddr] | |
Displays a stack trace for the current or specified thread. | |
ctx [cpu] | |
The context command is used to switch to kdb context for a CPU. With no argument the kdb command returns to using the current AIX context. | |
cdt [cdt_number [cdt_entry]] | |
The cdt command is used display information about Componenet Dump Tables (CDTs) or view the data for a component dump entry for a dump. |
d symb|eaddr [count] | |
Display data in byte format. | |
dw symb|eaddr [count] | |
Display data in word format. | |
dd symb|eaddr [count] | |
Display data in double word format. | |
dp paddr [count] | |
Display data in byte format. | |
dpw paddr [count] | |
Display data in word format. | |
dpd paddr [count] | |
Display data in double word format. | |
dc symb|eaddr [count] | |
Display disassembled instruction | |
dpc paddr [count] | |
Display disassembled instruction | |
dr [gp|sr|sp|reg_name] | |
Display registers. Argument gp displays all general purpose registers, sr displays all segment register, and sp displays all special purpose registers. A specific register may be displayed by name. | |
find [-s] symb|eaddr pattern [mask [delta]] | |
Find a pattern. The -s option indicates that pattern is a string, instead of a hex value. | |
findp [-s] paddr pattern [mask [delta]] | |
Find a pattern. The -s option indicates that pattern is a string, instead of a hex value. | |
ext [-p] eaddr delta [size [count]] | |
The ext subcommand displays size words starting at eaddr, then incementes by delta words and displays size words again. This continues until count loops are done. The -p flag indicates that delta is not the increment value, but the offset to a pointer to the next memory location. | |
extp [-p] paddr delta [size [count]] | |
The ext subcommand displays size words starting at eaddr, then incementes by delta words and displays size words again. This continues until count loops are done. The -p flag indicates that delta is not the increment value, but the offset to a pointer to the next memory location. |
nm symb | |
Translate a symbol to an effective address. | |
ns | |
The ns toggle may be used to enable/disable symbol translation. | |
ts eaddr | |
Translate an effective address to a symbol. |
hcal hex_expr | |
The hcal command may be used to convert hexadecimal values to decimal. | |
dcal decimal_expr | |
The dcal command may be used to convert decimal values to hexadecimal. |
stat | |
Display status information for a dump file. | |
switch [ [tslot|eaddr] | [u|k] ] | |
Switch the context to a particular thread or between user and kernel address space. |
lke [?] [-l] [slot|symb|eaddr] | |
Display information on loaded extensions. | |
stbl [slot|symb|eaddr] | |
Display loaded symbol tables. | |
rmst slot|symb|eaddr | |
Remove a symbol table. | |
exp [symb] | |
The exp command may be used to look for an exported symbol address or to display the export list. |
ppda [*|cpu|symb|eaddr] | |
Display per processor data areas. | |
intr [slot|symb|eaddr] | |
Display interrupt handler tables. | |
mst [tslot|symb|eaddr] | |
Display machine state save areas (mst). | |
p [*|slot|symb|eaddr] | |
Display process table entries. | |
th [*|slot|symb| eaddr|-w state] | |
Display thread table entries. | |
ttid [tid] | |
Display detailed data for a thread table entry. | |
tpid [pid] | |
Display summary information about each thread associated with a specified process. | |
rq [bucket|symb|eaddr] | |
Display run queues. | |
sq [bucket|symb|eaddr] | |
Display sleep queues. | |
lq [bucket|symb|eaddr] | |
Display lock queues. | |
u [-64][tslot|symb|eaddr] | |
Display the u-block for a thread. |
pbuf [*] symb|eaddr | |
Display physical buffer information. | |
volgrp symb|eaddr | |
Display volume group information. | |
pvol symb|eaddr | |
Display physical volume information. | |
lvol symb|eaddr | |
Display logical volume information. |
ascsi [slot|symb|eaddr] | |
Display SCSI adapter information. | |
vscsi [slot|symb|eaddr] | |
Display virtual SCSI information. | |
scdisk [slot|symb| eaddr] | |
Display SCSI disk information. |
hp [symb|eaddr] | |
Display kernel heap information. | |
xm [-?] | |
Display heap debug inforation. | |
kmbucket [?] [-l] [-c cpu] [-i index][addr] | |
Display kernel memory allocator bucket information. | |
kmstats [symb|eaddr] | |
Display kernel allocator memory statistics. |
buf [slot|symb|eaddr] | |
Display buffer cache headers. | |
hb [bucket|symb|eaddr] | |
Display the buffer cache hash list of headers. | |
fb [bucket|symb|eaddr] | |
Display the buffer cache freelist of headers. | |
gno symb|eaddr | |
Display data for a generic node structure. | |
gfs symb|eaddr | |
Display data for a generic file system structure. | |
file [slot|symb|eaddr] | |
Display the file table. | |
ino [slot|symb|eaddr] | |
Display the inode table. Only used inodes are printed. Unused inodes may be printed with the fino subcommand. | |
hino [bucket|symb|eaddr] | |
Display inode hash lists. | |
fino [slot|symb|eaddr] | |
Display inode (used and unused) cache list entries. | |
rno symb|eaddr | |
Display data for a remote node structure. | |
cku symb|eaddr | |
Display data for a client kudp private structure. | |
vno symb|eaddr | |
Display data for a virtual node structure. | |
vfs [slot|symb|eaddr] | |
Display data from the virtual file system table. | |
specno symb|eaddr | |
Display special device nodes data. | |
devno [slot|symb|eaddr] | |
Display device node table information. | |
fifono [slot|symb|eaddr] | |
Display fifo node table information. | |
hno [bucket|symb|eaddr] | |
Display hash node table information. |
var | |
Displaythe var structure and the system configuration of the machine. | |
dev [symb|addr|major] | |
Display the device switch table. | |
trb | |
Display timer request blocks. | |
slk [symb|eaddr] | |
Display data for simple locks. | |
clk [symb|eaddr] | |
Display data for complex locks. | |
ipl [*|cpu] | |
Display processor information table data. | |
trace [-h] [hook[:subhook]]... [#data]... [-cchannel] | |
Display data from kernel trace buffers. |
ifnet | |
Display interface information. | |
tcb [slot|symb|eaddr] | |
Display data for TCP blocks. | |
udb [slot|symb|eaddr] | |
Display data for UDP blocks. | |
sock [tcp|udp] [symb|eaddr] | |
Display socket information. | |
tcpcb [tcp|udp] [symb|eaddr] | |
Display TCP control blocks. | |
mbuf [tcp|udp] [symb|eaddr] | |
Display TCP/UDP message buffers. |
vmker | |
Display virtual memory kernel data. | |
rmap [*] [slot] | |
Display the real address range mapping table. | |
pfhdata | |
Display the virtual memory control variables. | |
vmstat | |
Display virtual memory statistics. | |
vmaddr | |
Display virtual memory control structure addresses. | |
pdt [*] [slot] | |
Display the paging device table. | |
scb [selection] | |
Displays VMM segment control blocks. | |
pft [selection] | |
Display VMM page frame table data. | |
pte [selection] | |
Display VMM page table entries. | |
pta [?] | |
Display VMM PTA segment information. | |
ste [-p pid] | |
Display segment table entry information for 64-bit processes. | |
sr64 [-p pid] [esid [count]] | |
Display segment registers for 64-bit processes. | |
segst64 [-p pid] [-e esid] [-s flag] [fno|shm | |
Display segment state information for 64-bit processes. | |
apt [selection] | |
Display alias page table information. | |
vmwait [symb|eaddr] | |
Display VMM wait status information. | |
ames [selection] | |
Display address map for a specified process. | |
zproc | |
Display information about the VMM zeroing kproc. | |
vmlog | |
Display the current VMM error log entry. | |
vrld | |
Display the VMM reload xlate table. This information is only used on SMP POWER PC machines, to prevent VMM reload dead-lock. | |
ipc [selection] | |
Display interprocess communication facility information. | |
lka [slot|symb|eaddr] | |
Display VMM lock anchor data. | |
lkh [slot|symb|eaddr] | |
Display VMM lock hash list entries. | |
lkw [slot|symb|eaddr] | |
Display information about VMM lock words. | |
vmdmap [slot|symb|eaddr] | |
Display VMM disk map information. | |
vmlocks | |
Display VMM spin locks. |
The following examples demonstrate invocation options for the kdb command
To invoke the kdb command with the default system image and kernel image files, enter:
kdb
The kdb program returns a (0)> prompt and waits for entry of a subcommand.
To invoke the kdb command using a dump file named /var/adm/ras/vmcore.0 and the UNIX kernel file named /unix, enter:
kdb /var/adm/ras/vmcore.0 /unix
The kdb program returns a (0)> prompt and waits for entry of a subcommand.
The following examples demonstrate usage of selected kdb commands:
To run the deadlock analysis subcommand, enter:
(0)> dla
To display the third entry in the vfs table, enter:
(0)> vfs 3
To display a list of vnodes, enter:
(0)> vnode
/usr/sbin/kdb | Contains the kdb command. |
/dev/mem | Default system image file |
/usr/lib/boot/unix | Default kernel file |
KDB Kernel Debugger and kdb Command in the AIX Version 4.3 Kernel Extensions and Device Support Programming Concepts.
Subcommands for the KDB Kernel Debugger and kdb Command in the AIX Version 4.3 Kernel Extensions and Device Support Programming Concepts.
Memory Overlay Detection System (MODS) in the AIX Version 4.3 Kernel Extensions and Device Support Programming Concepts.