kernel panic必备知识
獲得vmcore
Kernel dump 是什么
Kdump – 捕捉kernel dump的工具
Kdump的工作原理
Kdump的配置
Dump分析的工具crash(1)
準備環境
根據vmcore文件獲取內核版本及系統信息
kernel debuginfo 內核符號文件
Kernel source code
RHEL與SLES的不同
時區設置
運行crash utility:基于vmcore或基于live system
Dump分析的思路:從哪里開始
判斷panic類型
系統信息 sys
Message buffer – log
Kernel panic的若干種類型
Hard lockup
Kernel panic – not syncing: Watchdog detected hard LOCKUP on cpu 0
soft lockup
kernel panic – not syncing: softlockup: hung tasks
hung task panic
kernel panic – not syncing: hung_task: blocked tasks
oom
Kernel panic – not syncing: Out of memory: system-wide panic_on_oom is enabled
空指針/非法指針
BUG: unable to handle kernel NULL pointer dereference at 0000000000000650
BUG: unable to handle kernel paging request at ffff88081fc03cd0
MCE(Machine Check Exception)
Kernel panic – not syncing: Fatal Machine Check
NMI
Kernel panic – not syncing: NMI IOCK error: Not continuing
HP Watchdog timer module [hpwdt]
Kernel panic – not syncing: An NMI occurred, please see the Integrated Management Log for details
SysRq
PANIC: “SysRq: Trigger a crashdump”
BUG_ON() 斷語
kernel BUG at fs/inode.c:322!
理解函數調用棧(backtrace)
代碼的執行軌跡
CPU寄存器狀態pt_regs
棧幀里的數據
內核棧溢出
匯編指令
調用約定(call convention)
call/ret/leave指令
參數傳遞約定
通用寄存器,caller-saved vs. callee-saved
對照源代碼
changelog
內核模塊
Taint flags
crash utility如何加載內核模塊的調試信息
Hang分析
思路
是沒有可運行的進程?
還是有很多進程想運行但搶不到CPU?
什么是uninterruptible sleep
搶占式內核也有不能被搶占的情況
自旋鎖spinlock
crash工具的基本命令
進程 ps/task/runq/bt
內存kmem/vm/swap/ipcs
IO : dev/mount/files/fuser
網絡 net
Crash utility擴展工具
PyKdump
總結
以上是生活随笔為你收集整理的kernel panic必备知识的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 首销 3699 元,荣耀推出 Magic
- 下一篇: 极氪二手车业务子品牌“极氪认证”上线,三