注意:按照Eugene的建议,您可能要先尝试 addr2line ,它仍然需要带有调试符号的图像,例如 addr2line -e vmlinux_with_debug_info 0019594c(+offset) Consider the following linux kernel dump stack trace, you can trigger a panic from the kernel source code by calling panic("debugging a linux kernel panic");:[<001360ac>] (unwind_backtrace+0x0/0xf8) from [<00147b7c>] (warn_slowpath_common+0x50/0x60)[<00147b7c>] (warn_slowpath_common+0x50/0x60) from [<00147c40>] (warn_slowpath_null+0x1c/0x24)[<00147c40>] (warn_slowpath_null+0x1c/0x24) from [<0014de44>] (local_bh_enable_ip+0xa0/0xac)[<0014de44>] (local_bh_enable_ip+0xa0/0xac) from [<0019594c>] (bdi_register+0xec/0x150)In unwind_backtrace+0x0/0xf8 what the +0x0/0xf8 stands for?How can I see the C code of unwind_backtrace+0x0/0xf8?How to interpret the panic's content? 解决方案 It's just an ordinary backtrace, those functions are called in reverse order (first one called was called by the previous one and so on):unwind_backtrace+0x0/0xf8warn_slowpath_common+0x50/0x60warn_slowpath_null+0x1c/0x24ocal_bh_enable_ip+0xa0/0xacbdi_register+0xec/0x150The bdi_register+0xec/0x150 is the symbol + the offset/length there's more information about that in Understanding a Kernel Oops and how you can debug a kernel oops. Also there's this excellent tutorial on Debugging the KernelNote: as suggested below by Eugene, you may want to try addr2line first, it still needs an image with debugging symbols though, for exampleaddr2line -e vmlinux_with_debug_info 0019594c(+offset) 这篇关于如何阅读,理解,分析和调试Linux内核恐慌?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持! 上岸,阿里云!
06-07 17:03