我正在将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.
其他信息:
关于什么错误的想法?如果我确定问题是我的内核,内核模块编译,连接还是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.
这是什么意思?
答案 0 :(得分:0)
部分答案:
使用gdb 7.1,使用-gdwarf-2
重新编译内核和内核模块,而带有-O0
的模块似乎已经完成了这一操作。我不确定它是什么或者为什么。