我正在使用通过串行端口连接的两个虚拟机调试 linux 内核。
目标机器 等待来自远程 gdb 的连接,方法是在 的正确条目中插入
。 kgdbwait()
和 kgdboc=ttyS0,115200
>/boot/grub/grub.cfg
在主机
sudo gdb ./vmlinux
已读取符号,我应该能够在函数名称上放置断点。
(gdb) break oom_kill_process
Breakpoint 1 at 0xc1172ef0: file mm/oom_kill.c, line 843.
工作正常!
但是,如果我在 htb_dequeue_tree
处设置一个断点,它会被找到 here ,我收到以下错误:
(gdb) break htb_dequeue_tree
No symbol "htb_dequeue_tree" in current context.
最佳答案
最典型的原因是函数被内联——然后没有符号开始。通常,您可以在文件 + 行对上设置一个中断(例如 foo.c:42)。
在您的特定情况下,该函数是静态的并且只有一个用户:htp_dequeue。如果你反汇编它,你可能会看到 htp_dequeue_tree 中的代码被吞噬了。如果没有,还有一些其他的破坏正在发生(破坏其他功能是否有效?)
关于linux - GDB:linux 内置模块中的断点失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50618517/