このドキュメントで説明するソフトウェアは、Extended SupportまたはSustaining Supportのいずれかにあります。 詳細は、https://www.oracle.com/us/support/library/enterprise-linux-support-policies-069172.pdfを参照してください。
Oracleでは、このドキュメントに記載されているソフトウェアをできるだけ早くアップグレードすることをお薦めします。
次のcrashコマンドは、gdb統合を利用して、カーネル・データ構造をシンボリックで表示します。
- *
ポインタ参照コマンドをstructまたはunionのかわりに使用できます。 gdbモジュールによって適切な関数がコールされます。 次に例を示します。
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
全カーネル関数のソース・コードの命令を、指定した命令数について指定アドレスから、または関数の開始から指定アドレスまで逆アセンブルします。 次に例を示します。
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
カーネル変数の内容を表示します。 次に例を示します。
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
構造定義、または指定したアドレスにある構造の内容のフォーマットされた表示のいずれかを表示します。 次に例を示します。
crash>
struct cpu
struct cpu { int node_id; int hotpluggable; struct sys_device sysdev; } SIZE: 88- sym
カーネルのシンボル名をカーネル仮想アドレスとセクションに変換するか、カーネル仮想アドレスをシンボル名とセクションに変換します。 また、指定した文字列を含むすべてのシンボルに対するシンボル・リストを問い合せる(-q)か、またはすべてのカーネル・シンボルをリスト(-l)することもできます。 次に例を示します。
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
structコマンドと同様に、構造体ではなく共用体として定義されているカーネル・データ・タイプを表示します。
- whatis
構造体、共用体、typedefの定義、テキストまたはデータ・シンボルを表示します。 次に例を示します。
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