加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > Linux > 正文

linux-kernel – 远程gdb调试不会在断点处停止

发布时间:2020-12-13 23:09:07 所属栏目:Linux 来源:网络整理
导读:调试修改后的 Linux-3.11.0内核时遇到问题. 为了调试代码,我使用: GDB 7.6 QEMU 1.6.5 Linux内核3.11.0 我的系统有运行Ubuntu 12.10的Intel(R)Core(TM)i7-2760QM CPU @ 2.40GHz 我使用’make menuconfig’创建的配置文件编译了修改后的内核. (修改了“内核
调试修改后的 Linux-3.11.0内核时遇到问题.
为了调试代码,我使用:

> GDB 7.6
> QEMU 1.6.5
> Linux内核3.11.0

我的系统有运行Ubuntu 12.10的Intel(R)Core(TM)i7-2760QM CPU @ 2.40GHz

我使用’make menuconfig’创建的配置文件编译了修改后的内核. (修改了“内核黑客”类别)

这里引用了一些.config文件行(我发现相关):

CONFIG_DEBUG_INFO=y 
CONFIG_DEBUG_KERNEL=y
CONFIG_MAGIC_SYSRQ=y
CONFIG_DEBUG_FS=y
CONFIG_HAVE_HW_BREAKPOINT=y
CONFIG_HAVE_MIXED_BREAKPOINTS_REGS=y

我使用qemu和“-S”选项来启动我的内核,并使用gdb我连接到qemu并恢复它的执行:

(gdb) target remote :1234
(gdb) continue

设置断点时,例如:
休息时间表我得到一条确认消息,例如:

Breakpoint 1 at 0xffffffff81736400: file kernel/sched/core.c,line 2509.

所以到这里一切似乎都很好!

问题是gdb和qemu不会在断点处停止!
他们都只是继续跑……

我尝试按照某些地方的建议设置硬件断点,但是我收到了消息:

No hardware breakpoint support in the target.

这很奇怪,因为我设置了CONFIG_HAVE_HW_BREAKPOINT.

我也按照其他地方的建议取消设置CONFIG_DEBUG_RODATA,但仍然没有结果……

我试图乱用.config文件,如下所示:gdbserver inside qemu does not stop on breakpoints 但我无法弄清楚工作.config文件和我的.config文件之间的相关差异……(差异太大了!)

谁能帮帮我吗?

谢谢!!

解决方法

好的,我发现了问题所以我在这里发帖给其他人: 显然这是一个非常微妙的程序…我的配置文件很好.我需要做的只是在连接到qemu之后定义断点,而不是在加载vmlinux之后定义断点.这些断点必须是HARDWARE断点……否则它们不会破坏!

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读