Crash工具加载模块符号

一、问题:

在使用crash工具分析vmcore时,常会遇到内核模块符号不能解析的问题,如:

crash> struct igbadapter 0xffff81032bef56b8

struct: invalid data structure reference: igbadapter


二、原因:

那是因为没有找到igb驱动模块的符号信息。原因为:只使用了vmlinux文件(包含内核符号),而其它的单独加载的内核模块的符号信息实际是没有包含在vmlinux文件中的,需要使用单独加载。

模块的debug符号信息在kernel-debuginfo包(针对redhat系发行版)中有。所以,其实只需要安装kernel-debuginfo包就可以了。


三、解决

加载相应的符号信息后就即可正常访问。具体如下:

crash> mod -s igb /usr/lib/debug/lib/modules/2.6.18-164.el5/kernel/drivers/net/igb/igb.ko.debug

     MODULE       NAME                  SIZE  OBJECT FILE

ffffffff88285380  igb                 116181  /usr/lib/debug/lib/modules/2.6.18-164.el5/kernel/drivers/net/igb/igb.ko.debug 

crash> struct igb_adapter

struct igb_adapter {

    struct timer_list watchdog_timer;

    struct timer_list phy_info_timer;

    struct vlan_group *vlgrp;

    u16 mng_vlan_id;

    u32 bd_number;

    91pron free videos

    u32 rx_buffer_len;

    u32 wol;

    u32 en_mng_pt;

    u16 link_speed;

    u16 link_duplex;

    unsigned int total_tx_bytes;

    unsigned int total_tx_packets;

    unsigned int total_rx_bytes;

    unsigned int total_rx_packets;

    u32 itr;

    u32 itr_setting;

    u16 tx_itr;

    u16 rx_itr;

    struct work_struct reset_task;

    struct work_struct watchdog_task;

    bool fc_autoneg;

...


你可能感兴趣的:(reference,信息,Invalid,structure)