linux - GDB:linux内置模块中的断点失败
问题描述
我正在使用通过串口连接的两个虚拟机调试 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
找到的断点设置,我会收到以下错误:
(gdb) break htb_dequeue_tree
当前上下文中没有符号“htb_dequeue_tree”。
解决方案
最典型的原因是函数被内联 - 然后没有符号开始。很多时候,您可以在文件+行对上放置一个中断(例如 foo.c:42)。
在您的特定情况下,该函数是静态的,并且只有一个用户:htp_dequeue。如果你反汇编它,你可能会看到来自 htp_dequeue_tree 的代码被吞入其中。如果没有,还有其他一些问题正在发生(其他功能的中断是否有效?)
推荐阅读
- python - Python PCA sklearn
- python -
在句子生成器上输出? - php - 如何用php连接mysql数据库?
- c# - 在 WPF 中,如何在 LostFocus 上进行绑定但在 PropertyChanged 上进行验证?
- javascript - 为什么我的下拉菜单只显示了一半?
- android - 如何使用 Flutter 使 Android 中的状态栏变暗?
- c - 为什么从用户信息输入时我必须在使用 fgets 之前使用 getchar
- python - 将 Python 数组转换为列表中的字符串 [Pandas]
- django - 如何知道您是否将两个套接字连接到 django 通道中的同一组通道层
- javascript - 打字稿中的嵌套数组过滤器()函数-总是返回true?