gdb在断点之后丢失行号信息(在内核模块上)

时间:2012-05-18 11:06:46

标签: debugging linux-kernel gdb gdbserver

我正在将gdb连接到虚拟机的内核并尝试调试内核模块。我能够连接到虚拟机。我有内核代码的符号信息,可以很好地逐步完成内核代码。

当我为我的内核模块添加符号文件时(无论是在远程连接之前还是之后,偶然),我能够list <function_name>有关该功能的信息,直到我设置一个断点;之后:

(gdb) b function_name
Breakpoint 1 at 0xffffffffa01d0074 (3 locations)
(gdb) list function_name
No line number known for function_name.

其他信息:

  • 主机和客户都是Fedora 16 64位。
  • 我正在调试的内核是3.0.8 - 请注意,此内核在先前的32位设置上运行良好,具有不同的环境和远程连接设置。
  • 我用gdb 7.2和7.3.50尝试了这个。

关于什么错误的想法?如果我确定问题是我的内核,内核模块编译,连接还是gdb,那将会有所帮助。

更新:使用gdb 7.1,我得到以下信息:

...
(gdb) b function_name
/gdb/breakpoint.c:7903: internal-error: expand_line_sal_maybe: Assertion `found' failed.
A problem internal to GDB has been detected,
further debugging may prove unreliable.

这是什么意思?

1 个答案:

答案 0 :(得分:0)

部分答案:

使用gdb 7.1,使用-gdwarf-2重新编译内核和内核模块,而带有-O0的模块似乎已经完成了这一操作。我不确定它是什么或者为什么。