小编典典

如何阅读,理解,分析和调试Linux内核恐慌?

linux

考虑以下linux内核转储堆栈跟踪,您可以通过调用从内核源代码触发恐慌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)
  • unwind_backtrace+0x0/0xf8什么+0x0/0xf8主张?
  • 我怎么看C的C代码unwind_backtrace+0x0/0xf8
  • 如何解释恐慌的内容?

阅读 327

收藏
2020-06-07

共1个答案

小编典典

这只是一个普通的回溯,这些函数以相反的顺序调用(第一个调用的函数由上一个调用,依此类推):

unwind_backtrace+0x0/0xf8
warn_slowpath_common+0x50/0x60
warn_slowpath_null+0x1c/0x24
ocal_bh_enable_ip+0xa0/0xac
bdi_register+0xec/0x150

bdi_register+0xec/0x150是符号+偏移/长度有关于更多的信息,了解内核哎呀,以及如何可以调试内核哎呀。还有关于调试内核的出色教程

注意:按照Eugene的建议,您可能要先尝试addr2line,尽管它仍然需要带有调试符号的图像,例如

addr2line -e vmlinux_with_debug_info 0019594c(+offset)

2020-06-07