从内核oops PC中查找行号

时间:2013-11-23 00:22:52

标签: linux linux-kernel linux-device-driver embedded-linux

如果我有一个内核oops,下面的0xac / 0x2b8是什么意思?另外,如何在函数所在的文件中获取行号?这是ARM拱门上的linux。

PC位于get_next_timer_interrupt + 0xac / 0x2b8

2 个答案:

答案 0 :(得分:4)

内核可能需要启用各种调试选项,但“addr2line”应该为您提供地址的文件名和行号。 http://elinux.org/Addr2line_for_kernel_debugging

答案 1 :(得分:3)

这意味着在get_next_timer_interrupt+0xac地址发生了异常。 0xacget_next_timer_interrupt过程中的偏移量。 0x2b8表示异常发生的过程有多长(get_next_timer_interrupt)。

您可以使用addr2line解析它,如skorgon所写,或使用objdump命令反汇编Linux内核并在内核源代码中找到有问题的行。当然,Linux内核必须使用调试符号进行编译。