Linux Crash分析入门(三):crash命令

Linux Crash分析入门(一):kexec+kdump+crash简介
Linux Crash分析入门(二):启动kdump
Linux Crash分析入门(三):crash命令
Linux Crash分析入门(四):案例分析

启动Crash

Linux Crash分析入门(二):启动kdump 里提到,用crash工具分析kdump生成的dump.xxx文件的命令是sudo crash vmlinx-xxx dump.xxx,系统会进入 crash> 交互式命令行界面。

常用命令

crash>命令行输入help命令,可以查看所有可使用的命令:

crash> help

*              extend         log            rd             task           
alias          files          mach           repeat         timer          
ascii          foreach        mod            runq           tree           
bpf            fuser          mount          search         union          
bt             gdb            net            set            vm             
btop           help           p              sig            vtop           
dev            ipcs           ps             struct         waitq          
dis            irq            pte            swap           whatis         
eval           kmem           ptob           sym            wr             
exit           list           ptov           sys            q      

较常用的命令有bt, dis, struct, mod, gdb, log, kmem, exit/q等。

bt

bt - backtrace,即调用栈回溯堆栈回溯,用来获取崩溃点的调用栈上所有活动函数的调用序列,以及崩溃点处于哪个函数的多少偏移量。本质上就是回答了“当前崩溃点事通过怎样的一系列函数调用、在哪个位置崩溃的?”。
输入命令help bt可以查看bt命令相关的用法。

bt:直接查看崩溃点
bt -a: 每个 CPU 上的调用栈
bt -c 6:查看 CPU 6 上的调用栈

/**
 * Display a kernel stack backtrace.
 * If no arguments are given, the stack trace
 * of the current context will be displayed.
 */
crash> bt
PID: 40743  TASK: ffff9675577dca40  CPU: 6   COMMAND: "modprobe"
 #0 [ffffae284c607850] machine_kexec at ffffffffba685e40
 #1 [ffffae284c6078b0] __crash_kexec at ffffffffba78cc22
 #2 [ffffae284c607980] crash_kexec at ffffffffba78e3a8
 #3 [ffffae284c607990] oops_end at ffffffffba63fa06
 #4 [ffffae284c6079b8] page_fault_oops at ffffffffba697a0e
 #5 [ffffae284c607a18] do_user_addr_fault at ffffffffba6981c9
 #6 [ffffae284c607a70] exc_page_fault at ffffffffbb348ec7
 #7 [ffffae284c607aa0] asm_exc_page_fault at ffffffffbb400ace
    [exception RIP: mydrv_deinit+374] // 在函数 mydrv_deinit+374 地址的位置发生崩溃
    RIP: ffffffffc0ffa196  RSP: ffffae284c607b50  RFLAGS: 00010246
    RAX: 0000000000000039  RBX: 0000000000000000  RCX: 0000000000000027
    RDX: ffffae28403cf000  RSI: 0000000000000001  RDI: ffff967c5f5a0980
    RBP: ffffae284c607be8   R8: 0000000000000003   R9: fffffffffffdcba0
    R10: 0000000000ffff10  R11: 000000000000000f  R12: 0000000000000004
    R13: ffff96759054ac00  R14: ffff96756a41b9e8  R15: ffff96755ebeec00
    ORIG_RAX: ffffffffffffffff  CS: 0010  SS: 0018
 #8 [ffffae284c607bf0] xxxxxxxxxxx at ffffffffc0fda522 [mygpu]
 #9 [ffffae284c607c00] xxxxxxxxxxxxxxxxx at ffffffffc1188405 [mygpu]
#10 [ffffae284c607c40] xxxxxxxxxxxxxxx at ffffffffc1188974 [mygpu]
#11 [ffffae284c607c68] xxxxxxxxxxxxxxxxxxxx at ffffffffc11877e0 [mygpu]
#12 [ffffae284c607c90] component_unbind at ffffffffbae31cab
#13 [ffffae284c607cc0] component_unbind_all at ffffffffbae31d86
#14 [ffffae284c607cf8] mygpu_component_unbind at ffffffffc0f8b60e [mygpu]
#15 [ffffae284c607d18] take_down_master at ffffffffbae31ef2
#16 [ffffae284c607d38] component_del at ffffffffbae325bf
#17 [ffffae284c607d60] vpu_remove at ffffffffc0f947f9 [mygpu]
#18 [ffffae284c607d70] platform_remove at ffffffffbae3d741
#19 [ffffae284c607d88] __device_release_driver at ffffffffbae3aa14
#20 [ffffae284c607dc0] driver_detach at ffffffffbae3bf33
#21 [ffffae284c607df0] bus_remove_driver at ffffffffbae3a03c
#22 [ffffae284c607e10] driver_unregister at ffffffffbae3c5d1
#23 [ffffae284c607e28] platform_unregister_drivers at ffffffffbae
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值