Dump file Analyzer and live system probe.
iadb [ -u File ] [ -d Dump_File ]
The iadb command provides dump analysis to help in diagnosing system crashes and can also be used to probe a live system. When a system crash occurs, the dump module creates a dump file (if configured). Later, users identify the dump file and use iadb to analyze the dump causes and environment. iadb works as an interactive tool providing a prompt. User can type in the various iadb subcommands to perform the necessary debugging operations.
Note: The iadb subcommands and the their syntax are similar to Kernel debugger IADB. Not all IADB subcommands are implemented in iadb. Also there are new subcommands in iadb(related to dump file) which do not exist in IADB.
The default kernel file used for symbol processing is /unix. The iadb retrieves symbols from /unix and also from the loaded kernel extensions.
Note: In the case of dump file, symbol searches on the loaded kernel extension modules takes time (due to delays in file accesses). So a command in iadb provides you with an opportunity to cache in the symbols for a loaded kernel extension. Similarly you can remove the module's symbols from symbol resolve sequence.
iadb is a different from the kdb command and crash. iadb supports commands, which achieve functionality, which may also be present in kdb and crash. iadb subcommands follow the syntax of commands in IADB, the kernel debugger in AIX/Itanium-based environment.
The following table describes the most common argument types referenced in
the subcommand syntax diagrams that follow.
Argument | Description |
* | 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 constant 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. |
d | Display Virtual Memory. |
dis | Disassemble memory. |
b | Display branch registers. |
cfm | Display Current Stacked Register |
fpr | Display FPR(s) (f0 - f127) |
iip | Display Instruction Pointer |
iipa | Display Instruction Previous Address |
ifa | Display fault address |
p | Display Predicate register(s) |
r | Display General registers |
rse | Display Register Stack Registers |
cpu | Switch context to a cpu. |
reason | Display Reason for command iadb invocation. |
stat | Display System information/Crash information |
sw | Switch to a Thread |
sys | Display System Information |
t | Stack traceback |
dev | Display Device Switch Table |
heap | Heap Structures Display |
intrh | Display Interrupt Handler Table/Structures |
iplcb | Display IPL Control Block |
kext | Display Loaded Kernel Extensions |
mltrace | Dump Internal Per-CPU Trace Buffer |
mst | Display Machine State Stack |
lock | Display Lock Structures/List |
pnda | Display pnda structure |
ppda | Display Per Processor Descriptor Area |
pr | Process Display |
pvpr | PvProcess Structure Display |
pvth | PvThread Structure Display |
th | Thread Display |
us | User Structure Display |
ut | Uthread Structure Display |
xm | Xmalloc Internal Structures Display |
map | Map Address to Symbol or Symbol to Address |
nm | Map a Symbol to an effective address |
ns | Map an address to the closest Symbol |
ldsyms | Load symbols for a module |
unldsyms | Unload symbols for a module |
cdt | Display CDT and its data areas. |
! | Shell escape |
dcal | Decimal Calculator |
hcal | Hex Calculator |
help | Command Listing/Command Help (help [command]) |
his | Command history |
quit | Quit command iadb. Aliases are : go, q |
set | Display/Set Debugger Parameters |
Detailed information about the various commands supported by command iadb
follows in the next section. These commands are described in an
ascending order w.r.t. command names.
! Command | |
| Shell Escape. User can invoke system commands from the
iadb command prompt using this support. command
is an operating system supported CLI based command. For example:
! ls ! cat /.rhosts |
b [ reg_no ] | |
| Display/Set Branch Register(s). regno is the branch
register number (0 - 7) and value is a new value to set. For
example:
To display all Branch Registers. b To display Branch Register b6. b6 |
cdt [ [ -d ] cdt_number [cdt_entry] ] | |
| The cdt subcommand displays information about Component Dump
Tables (CDTs) or views the data for a component dump entry for a dump.
The dump routines must be located in the directory indicated in the directory
/usr/lib/ras/dmprtns/. The name of the dump formatter
executable should be the same as the component being dumped. If the
executable by the component's name is not found then the default dump
formatter is invoked (dmpfmt executable in
/usr/lib/ras/dmprtns/ directory). cdt_ number is
the CDT index to display, and cdt_entry is the data area in the CDT
index to display. For example:
To display the 5th data areas of the component entry 4 cdt 4 5 |
cfm | |
Display Current Stacked Register. For example:
cfm | |
cpu [ num ] | |
Display CPU status or Change debugging CPU. num is the
cpu number to switch to. For example:
To switch back to the original/base cpu cpu To switch to the current thread on cpu 2 cpu 2 | |
d address | ordinal [ number ] | |
| Display Virtual Memory. address is the address or
symbol to dump, ordinal is the number of byte access (1,2,4,or 8),
and number is the number of elements to dump (of size
ordinal ). For example:
To display 20 4-byte words from address foo-20: d foo-20 4 20 To display single 8-byte doubleword from address 0x1234: d (r32) 8 2 |
dcal expression_in_decimal | |
| Decimal Calculator. For example:
dcal 2+3*4 |
dev [ major_number ] | |
| Display Device Switch Table. major_number is the major
number slot to display. For example:
To display entire switch table: dev To display switch table entries for major 21: dev 21 |
dis symbol | address [ count ] | |
Disassemble instructions from address of the input symbol or from the
provided address. symbol and address is the
address or symbol to disassemble, count is the number of bundles to
disassemble. For example:
To disassemble 20 Bundles From 'foo': dis foo 20 To disassemble 20 Bundles from 'foo': dis (b0)-10 | |
fpr [ regno ] | |
| Display FPR(s) (f0 - f121). regno is the fpr register
number (0 - 127). For example:
To display all low FP Registers: fpr To display f15: fpr 15 |
hcal expression_in_hexa_decimal | |
| Decimal Calculator. For example:
hcal 2+3*a |
heap [ -n { srad } [ address ] ] | [address ] | |
| Display heap Information. n is the srad (or numa node)
number. For example:
To display detailed info for default heap (numa kernel heap): heap To display detailed information for default numa heap for srad 1: heap -n 1 To display detailed information for a heap at an address: heap E000009710000000 To display detailed info for a numa heap at an address: heap E0000000083849A8 To display detailed info for numa heap for a node: heap -n 0 kernel_heap heap -n 0 E0000000083849A8 |
help [ cmd ] | |
| Display a list of commands with short descriptions.cmd
is the Command for which help is needed. For example:
To display debugger command List: help To display Help on the mltrace command: help mltrace |
his [ ? ] [ count ] | |
| Prints history of commands. count is the number of
lines to display. For example:
his |
ifa | |
Display fault address. For example:
ifa | |
iip | |
| Display or modify instruction pointer. For example:
To display instruction pointer: iip To set the instruction pointer to foo: iip foo To increment current iip by 0x10: iip (iip)+0x10 |
iipa | |
| Display instruction previous address. For example:
iipa |
intrh [ -l { level } ] | [-p { priority } ] | [-s { slot } ] | [-v { address } ] | |
| Display interrupt handler information and table.-l
specifies the interrupt level, -p specifies the
interrupt priority level, -s specifies the slot of the
interrupt handler, and -v specifies the address of the interrupt
handler structure. For example:
To display interrupt handler table: intrh To display interrupt handler table for level of 16 (0x10): intrh -l 0x10 To display interrupt handler table for priority of 5: intrh -p 5 To display interrupt handler table for slot 16: intrh -s 16 To display detailed info about an interrupt handler entry: intrh -v 0xE0000000085850B0 |
itc | |
| Display Time Registers ITC ITM and ITV. For example:
itc |
iplcb | |
| Display IPL control block. For example:
iplcb |
kext | |
| Display loaded kernel extensions. For example:
To display all loaded kernel extensions and their text and data load addresses: kext |
kr [ regno ] | |
Display kernel register(s). regno is the kernel
register number (0 - 7). For example:
To display all kernel registers: kr To display kernel register 7: kr 7 | |
lock [ -c ] | [-i ] | [ -l ] | [ -s ] | [ -v { address } ] | |
| Display Complex, Simple, and Lockl Locks List and Structure. The
-c flag specifies a complex lock , -l specifics a simple
(v3 style) lock, -i specifics instrumentation information about the
lock (applies only to simple and complex locks), -s specifies a
simple lock, and -v specifies the address of the
lock.
Examples:
|
ldsyms [ -p kernext_full_path ] kernext | |
| Caches all the symbols related to the loaded kernel extension.
kernext is the name of the kernel extension, and
kernext_full_path is the name of the kernel extension including the
complete path.
Examples:
|
map { symbol | address } | |
| Map Address to Symbol or Symbol to Address. symbol is
the symbol to show address for and address is the address to show
symbol for.
Examples:
|
mltrace [ p<cpu ] [ entries ] | |
Dump Internal Per-CPU Trace Buffer. cpu specifies the
CPU (logical numbering) to dump the trace buffer for, and entries
specifies the number of most recent entries to dump.
Examples:
Note: This feature is only available on development kernels (compiled with DEBUG). | |
mst [ addr ] | |
| Display Machine State Stack. addr is the address of an
MST to display.
Examples:
|
p [ regno ] | |
| Display/Set Predicate Register(s). regno is the
predicate register number (0 - 63).
Examples:
|
pnda [ srad ] | |
| Display Per Node Descriptor Area. srad specifies which
srad's Per Node Descriptor Area (pnda) to display
Examples:
|
ppda [ cpu ] | |
| Display Per Processor Descriptor Area. cpu specifies
which CPU's ppda to display (logical numbering)
Examples:
|
pr [ -p | -s | -v { value } ] [-a] [* ] | |
| Display Process Structure information. -p {
value } specifies process where PID = {value},
-s {value} specifies the process in slot
{value}, -v {value} specifies the proc struct
pointer = {value}, -aspecifies a detailed display for
all processes, and * specifies a process table display.
Examples:
|
pvpr [ -p | -s | -v { value ] [ -a] [* ] | |
Display PvProcess Structure information. -p {
value } specifies process where PID = {value},
-s {value} specifies the process in slot
{value}, -v {value} specifies the proc struct
pointer = {value}, -aspecifies a detailed display for
all processes, and * specifies a process table display.
Examples:
| |
pvth [ -p | -s | -v { value ] [ -a] [* ] | |
Display PvThread Structure information. -p {
value } specifies process where PID = {value},
-s {value} specifies the process in slot
{value}, -v {value} specifies the proc struct
pointer = {value}, -aspecifies a detailed display for
all processes, and * specifies a process table display.
Examples:
| |
q or quit or go | |
| Exits from the iadb command. |
r [ regno ] | |
Display/Set General Register(s). regno specifies the
gpr register number (0 - 127).
Examples:
| |
reason | |
| Display the reason why the iadb command was invoked. |
rse | |
| Display Register Stack Registers. |
set [ parameter=value ] | |
| Lists and manipulates iadb
parameters.parameter=value could
be:
|
sw [ -s ][ -t ] [value ] | |
| Switches context to a particular thread. -s specifics a
thread slot number, -t specifies a thread id number.
Examples:
|
sys | |
| Display System Information, such as:
|
t [ -s thread_slot ] [ -t thread_id ] [ -vthread_structure_pointer ] | |
| Call Stack Trace. thread_slot specifies the thread slot
for the requested stack trace, thread_id specifies the thread id
for the requested stack trace, and thread_structure_pointer
specifies the pointer to pvthread.
Examples:
Note: |
th [ -s { slot } | -t { tid } | -v { thrdptr } ] [ -a ] [ * ] | |
| Display pthread structure. -s { slot }
provides detailed thread information for thread in slot,
-t { tid } provides detailed thread information for
thread in tid, -v { thrdptr } provides
detailed thread information for thread pointer thrdptr,
-a provides detailed thread information for all threads, and
* = displays thread table.
Examples:
|
unldsyms kernext | |
Removes all the symbols of kernel extension from the cache.
kernext must be the same string supplied as kernext during
ldsyms.
Examples: unldsyms /usr/lib/drivers/lft_loadpin | |
xm [ -a ] [ -A ] [ size ] ] [ -c ] [ -C ] [ -d ] [ -D] [ -f ] [ -F ] [addr ] ] [ -h ] [ -H ] [ 0 ] [ 1 ] [ -l ] [ -p ] [ -s ] [ -S ] [ -u ] [-v ] [addr ] | |
| Display Xmalloc Information (if xmdbg is enabled).
Where:
Examples: xm 0xE000009717AE6010 xm -l 0xE000009717AE6010 xm -D 0xE000009717AE6010 xm -l -D 0xE000009717AE6010 xm -a xm -l -a xm -d 200 xm -f xm -l -f xm -h 0xE000009714125D00 xm -l -p 2 xm -p 2 xm -p 2 0xE000009710000000 xm -s 0xE000009714056680 xm -l -s 0xE000009714056680 xm -D -s 0xE000009714056680 xm -S xm -u xm -v |
sysdumpdev, sysdumpstart, crash, kdb, IADB (Kernel debugger)
Root permissions are required to run iadb on the active system.
/usr/sbin/iadb | Is the iadb command. This file exists as part of the package bos.sysmgt |
/dev/mem | Kernel memory access character special file. |
/unix | Default kernel file. |
The sysdumpdev command, sysdumpstart command, kdb command.
Information mod and kdb in AIX 5L Version 5.1 Kernel Extensions and Device Support Programming Concepts