このドキュメントで説明するソフトウェアは、Extended SupportまたはSustaining Supportのいずれかにあります。 詳細は、https://www.oracle.com/us/support/library/enterprise-linux-support-policies-069172.pdfを参照してください。
Oracleでは、このドキュメントに記載されているソフトウェアをできるだけ早くアップグレードすることをお薦めします。

機械翻訳について

9.2.3 カーネル・データ構造分析コマンド

次の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