GDB无法找到行号

时间:2011-06-09 09:18:10

标签: linux module gdb kernel line-numbers

我正在使用GDB来调试Linux内核模块。 加载模块后,我使用add-symbol-file添加模块符号。

当我在GDB中使用list命令在模块中查找符号时,它会找到它,例如:

(gdb) list __do_restart
122  *      would provide type of error or success. In the case of early restart support from
123  *      cr_mods a signal will be posted at appropriate time.
124  *
125  *      NOTE: This type of restarting could be used for migrating parallel processes.
126  */
127 int __do_restart(void *data){
128     struct siginfo info;
129     struct object_stored_data *sd;
130     struct crmod_clients *clt = get_client(data);
131     memset(&info, 0, sizeof(struct siginfo));
(gdb) b __do_restart
Breakpoint 1 at 0xe081740e: file /home/amrzar/Workspace/common/commod.c, line 130.

我甚至可以为它设置一个断点。但是当我使用list执行第一个中断后,它说:

 (gdb) list __do_restart
    No line number known for __do_restart

它只是失去了符号!为什么? (我确定目标文件中存在调试信息) 感谢

1 个答案:

答案 0 :(得分:3)

我真的不知道导致这个问题的原因,但是一旦我使用add-symbol-file遇到同样的问题,但添加-readnow选项就解决了这个问题!