The software described in this documentation is either in Extended Support or Sustaining Support. See https://www.oracle.com/us/support/library/enterprise-linux-support-policies-069172.pdf for more information.
Oracle recommends that you upgrade the software described by this documentation as soon as possible.
The following crash commands takes advantage of gdb integration to display kernel data structures symbolically:
- *
The pointer-to command can be used instead struct or union. The gdb module calls the appropriate function. For example:
crash>
*buffer_head
struct buffer_head { long unsigned int b_state; struct buffer_head *b_this_page; struct page *b_page; sector_t b_blocknr; size_t b_size; char *b_data; struct block_device *b_bdev; bh_end_io_t *b_end_io; void *b_private; struct list_head b_assoc_buffers; struct address_space *b_assoc_map; atomic_t b_count; } SIZE: 104- dis
Disassembles source code instructions of a complete kernel function, from a specified address for a specified number of instructions, or from the beginning of a function up to a specified address. For example:
crash>
dis fixup_irqs
0xffffffff81014486 <fixup_irqs>: push %rbp 0xffffffff81014487 <fixup_irqs+1>: mov %rsp,%rbp 0xffffffff8101448a <fixup_irqs+4>: push %r15 0xffffffff8101448c <fixup_irqs+6>: push %r14 0xffffffff8101448e <fixup_irqs+8>: push %r13 0xffffffff81014490 <fixup_irqs+10>: push %r12 0xffffffff81014492 <fixup_irqs+12>: push %rbx 0xffffffff81014493 <fixup_irqs+13>: sub $0x18,%rsp 0xffffffff81014497 <fixup_irqs+17>: nopl 0x0(%rax,%rax,1) ...- p
Displays the contents of a kernel variable. For example:
crash>
p init_mm
init_mm = $5 = { mmap = 0x0, mm_rb = { rb_node = 0x0 }, mmap_cache = 0x0, get_unmapped_area = 0, unmap_area = 0, mmap_base = 0, task_size = 0, cached_hole_size = 0, free_area_cache = 0, pgd = 0xffffffff81001000, ...- struct
Displays either a structure definition, or a formatted display of the contents of a structure at a specified address. For example:
crash>
struct cpu
struct cpu { int node_id; int hotpluggable; struct sys_device sysdev; } SIZE: 88- sym
Translates a kernel symbol name to a kernel virtual address and section, or a kernel virtual address to a symbol name and section. You can also query (-q) the symbol list for all symbols containing a specified string or list (-l) all kernel symbols. For example:
crash>
sym jiffies
ffffffff81b45880 (A) jiffies crash>sym -q runstate
c590 (d) per_cpu__runstate c5c0 (d) per_cpu__runstate_snapshot ffffffff8100e563 (T) xen_setup_runstate_info crash>sym -l
0 (D) __per_cpu_start 0 (D) per_cpu__irq_stack_union 4000 (D) per_cpu__gdt_page 5000 (d) per_cpu__exception_stacks b000 (d) per_cpu__idt_desc b010 (d) per_cpu__xen_cr0_value b018 (D) per_cpu__xen_vcpu b020 (D) per_cpu__xen_vcpu_info b060 (d) per_cpu__mc_buffer c570 (D) per_cpu__xen_mc_irq_flags c578 (D) per_cpu__xen_cr3 c580 (D) per_cpu__xen_current_cr3 c590 (d) per_cpu__runstate c5c0 (d) per_cpu__runstate_snapshot ...- union
Similar to the struct command, displaying kernel data types that are defined as unions instead of structures.
- whatis
Displays the definition of structures, unions, typedefs or text or data symbols. For example:
crash>
whatis linux_binfmt
struct linux_binfmt { struct list_head lh; struct module *module; int (*load_binary)(struct linux_binprm *, struct pt_regs *); int (*load_shlib)(struct file *); int (*core_dump)(long int, struct pt_regs *, struct file *, long unsigned int); long unsigned int min_coredump; int hasvdso; } SIZE: 64