debug kernel 的一些trace的方法
上一篇文章记录了第一次patch kernel的经历。这篇再记录一下当时的一些debug方法。
- printk()
- dump_stack()
- Dynamic debug/debugfs
Dynamic debug — The Linux Kernel documentation
# grub kernel boot param
dyndbg="file drivers/mtd/spi-nor/* +p file drivers/spi/* +p"
- BIOS ACPI table配置检查
scp diag@172.31.237.202:/sys/firmware/acpi/tables/* ./
iasl -d ./*
grep -arni "AMDI0063" ./*
vi ./DSDT.dsl
- Oops问题定位
sjc-ads-1999:/nobackup/tianyxu/work3/cn-diag/nexus_9000 > nm -n ./os/build/x86_64-build/rootfs/lib/modules/6.16.0/kernel/drivers/net/ethernet/intel/igb/igb.ko | grep igb_setup_rx_resources
00000000000058e1 T __pfx_igb_setup_rx_resources
00000000000058f1 T igb_setup_rx_resources
0x58f1 + 0x47 = 0x5938
sjc-ads-1999:/nobackup/tianyxu/work3/cn-diag/nexus_9000 > addr2line -e ./os/build/x86_64-build/rootfs/lib/modules/6.16.0/kernel/drivers/net/ethernet/intel/igb/igb.ko 0x5938
/nobackup/tianyxu/work3/cn-diag/nexus_9000/os/linux/include/net/xdp.h:449
sjc-ads-1999:/nobackup/tianyxu/work3/cn-diag/nexus_9000 > awk 'NR==449' /nobackup/tianyxu/work3/cn-diag/nexus_9000/os/linux/include/net/xdp.hreturn __xdp_rxq_info_reg(xdp_rxq, dev, queue_index, napi_id, 0);