kernel panic必备知识
獲得vmcore
Kernel dump 是什么
Kdump – 捕捉kernel dump的工具
Kdump的工作原理
Kdump的配置
Dump分析的工具crash(1)
準(zhǔn)備環(huán)境
根據(jù)vmcore文件獲取內(nèi)核版本及系統(tǒng)信息
kernel debuginfo 內(nèi)核符號文件
Kernel source code
RHEL與SLES的不同
時區(qū)設(shè)置
運(yùn)行crash utility:基于vmcore或基于live system
Dump分析的思路:從哪里開始
判斷panic類型
系統(tǒng)信息 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!
理解函數(shù)調(diào)用棧(backtrace)
代碼的執(zhí)行軌跡
CPU寄存器狀態(tài)pt_regs
棧幀里的數(shù)據(jù)
內(nèi)核棧溢出
匯編指令
調(diào)用約定(call convention)
call/ret/leave指令
參數(shù)傳遞約定
通用寄存器,caller-saved vs. callee-saved
對照源代碼
changelog
內(nèi)核模塊
Taint flags
crash utility如何加載內(nèi)核模塊的調(diào)試信息
Hang分析
思路
是沒有可運(yùn)行的進(jìn)程?
還是有很多進(jìn)程想運(yùn)行但搶不到CPU?
什么是uninterruptible sleep
搶占式內(nèi)核也有不能被搶占的情況
自旋鎖spinlock
crash工具的基本命令
進(jìn)程 ps/task/runq/bt
內(nèi)存kmem/vm/swap/ipcs
IO : dev/mount/files/fuser
網(wǎng)絡(luò) net
Crash utility擴(kuò)展工具
PyKdump
總結(jié)
以上是生活随笔為你收集整理的kernel panic必备知识的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 首销 3699 元,荣耀推出 Magic
- 下一篇: python和php互动_PHP中常见的