远程 gdb 调试不会在断点处停止

2023-11-26

我在调试修改后的 Linux-3.11.0 内核时遇到问题。 为了调试代码,我使用:

  1. GDB 7.6
  2. QEMU 1.6.5
  3. Linux内核3.11.0

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

我使用“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

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

(gdb) target remote :1234
(gdb) continue

设置断点时,例如:break schedule我收到一条确认消息,例如:

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 文件:qemu 内的 gdbserver 不会在断点处停止但我无法弄清楚工作 .config 文件和我的 .config 文件之间的相关差异...(差异太多了!)

谁能帮帮我吗?

谢谢你!!


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

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

远程 gdb 调试不会在断点处停止 的相关文章

  • 如果物理内存的大小是2^32-1,那么虚拟内存的大小是多少?

    我知道物理地址是 32 位长 但是如何通过这些信息找出虚拟内存的大小 虚拟内存地址空间的总大小为2 32x86架构和更大 目前约为 2 48 x64建筑学 然而 操作系统通常会保留一部分空间 因此 32 位应用程序不一定能一次寻址 4GB
  • GDB错误:“进程记录:当前架构不支持记录功能”

    我正在尝试在 GDB 中进行反向执行 特别是target record按照说明在 gdb 中运行我的程序后here https stackoverflow com questions 1206872 go to previous line
  • 是否可以将 CFLAGS 设置为 Linux 内核模块 Makefile?

    例如 常见设备模块的Makefile obj m jc o default MAKE C lib modules shell uname r build M shell pwd modules clean MAKE C lib module
  • 内存地址是否指向一个字节的信息?

    以下是 DTS 文件的摘录 linux arch powerpc boot dts 板名 dts memory device type memory reg lt 0x00000000 0x40000000 gt 1GB at 0 嵌入式设
  • 我在哪里可以学习如何使 C++ 程序与操作系统 (Linux) 交互

    我是一个 C 初学者 我想创建与操作系统交互的小程序 使用 Kubuntu Linux 到目前为止 我还没有找到任何教程或手册来让 C 与操作系统交互 在 PHP 中 我可以使用命令 exec 或反引号运算符来启动通常在控制台中执行的命令
  • 在中断时获取 current->pid

    我正在Linux调度程序上写一些东西 我需要知道在我的中断到来之前哪个进程正在运行 当前的结构可用吗 如果我在中断处理程序中执行 current gt pid 我是否可以获得我中断的进程的 pid 你可以 current gt pid存在并
  • gdb 中的 是什么意思?

    gdb n 134 a b c 0xdeadbeef uint32 t length initval gdb n gdb p a 30
  • gdb 错误 - 文件不是可执行格式:无法识别文件格式

    我正在尝试使用 gdb 调试某个名为 xdf 的程序 但是当我运行 gdb xdf 时 出现以下错误 home nealtitusthomas X ray astronomy heasoft 6 24 x86 64 pc linux gnu
  • 大会,你好世界问题

    我正在 Linux 上学习 asm noobuntu 10 04 我得到了以下代码 http asm sourceforge net intro hello html http asm sourceforge net intro hello
  • Xenomai 中的周期性线程实时失败

    我正在创建一个周期性线程 它在模拟输出上输出方波信号 我正在使用 Xenomai API 中的 Posix Skin 和 Analogy 我使用示波器测试了代码的实时性能 并查看了方波信号 频率为 1kHz 的延迟 我应该实现 250us
  • 如何在 Linux x86_64 上模拟 iret

    我正在编写一个基于 Intel VT 的调试器 由于当 NMI Exiting 1 时 iret 指令在 vmx guest 中的性能发生了变化 所以我应该自己处理vmx主机中的NMI 否则 guest会出现nmi可重入错误 我查了英特尔手
  • 确定分区属于什么文件系统

    操作系统如何知道分区正在使用什么文件系统 换句话说 FAT16 32 NTFS ext2 3等如何区分 如果您在 Windows 上使用 Win32 API 则可以调用 GetVolumeInformation http msdn micr
  • saber sd 如何在没有 SPL 的情况下直接从 uboot 启动

    sabre sd 基于 imx 6 最大内部 RAM 约为 150Kb 然而 uboot 足够大 可以容纳在这个空间中 在这个场景中事情是如何进行的 https community freescale com docs DOC 95015
  • TUI模式下的GDB:如何处理stderr与ui的交互

    我正在尝试使用gdb来调试caffe http caffe berkeleyvision org 我更喜欢使用 tui 模式 因为它允许我查看整个源代码而不仅仅是一行 但有一个问题 每当程序caffe输出一些东西stderr 输出扭曲了 t
  • 在 /dev/input/eventX 中写入事件需要哪些命令?

    我正在开发一个android需要将触摸事件发送到 dev input eventX 的应用程序 我知道C执行此类操作的代码结构如下 struct input event struct timeval time unsigned short
  • 如何使用 os.chdir 转到减去最后一步的路径?

    例如 一个方法传递了一个路径作为参数 这个路径可能是 C a b c d 如果我想使用 os chdir 更改为 C a b 怎么办 c 没有最后一个文件夹 os chdir 可以接受 命令吗 os chdir 可以采取 作为论点 是的 然
  • 树莓派的设备树驱动内核

    我想用设备树驱动的 Linux 内核启动树莓派 有什么特别的事情要做吗 谁能指出为树莓派设置基于设备树的内核启动需要什么 我可能需要有树莓派内核源代码 其中设备驱动程序应与设备树兼容 如果是这样 我在哪里可以找到 Raspberry Pi
  • gdb查找行号的内存地址

    假设我已将 gdb 附加到一个进程 并且在其内存布局中有一个文件和行号 我想要其内存地址 如何获取文件x中第n行的内存地址 这是在 Linux x86 上 gdb info line test c 56 Line 56 of test c
  • 为什么内核需要虚拟寻址?

    在Linux中 每个进程都有其虚拟地址空间 例如 32位系统为4GB 其中3GB为进程保留 1GB为内核保留 这种虚拟寻址机制有助于隔离每个进程的地址空间 对于流程来说这是可以理解的 因为有很多流程 但既然我们只有 1 个内核 那么为什么我
  • 如何有效截断文件头?

    大家都知道truncate file size 函数 通过截断文件尾部将文件大小更改为给定大小 但是如何做同样的事情 只截断文件的尾部和头部呢 通常 您必须重写整个文件 最简单的方法是跳过前几个字节 将其他所有内容复制到临时文件中 并在完成

随机推荐

  • 如何向 aws sso 用户授予 eks 集群权限?

    我通过 IAM 用户部署了 EKS 集群 需要向其他 aws sso 用户授予完整的集群权限 我遵循了这个指示https docs aws amazon com eks latest userguide add user role html
  • 如何将 AudioFilePlayer AudioUnit 连接到 3DMixer?

    我正在尝试将 AudioFilePlayer AudioUnit 连接到 AU3DMixerEmbedded 音频单元 但没有成功 这就是我正在做的 创建一个AUGraph with NewAUGraph 打开图表 初始化图表 添加3个节点
  • iOS 14 SwiftUI 键盘自动抬起视图

    我在视图中使用 TextField 当它成为第一响应者时 它会离开视图 如下面的 GIF 所示 有什么办法可以摆脱这种行为吗 这是我的代码 NavigationView content ZStack MyTabView selectedIn
  • Safari 上的 HTML5 音频标签有延迟

    我正在尝试使用 html 标签来完成一个简单的类似涂鸦的行为 其中点击时会响起 mp3 ogg 声音 它应该可以在 Firefox Safari 和 iPad Safari 下运行 这是非常理想的 我尝试了很多方法 最终得出以下结论 HTM
  • Google Calendar Api,会议室可用吗?

    如何列出特定日期时间的特定日历资源 房间 的可用性 就像如果我想列出会议室的所有今天活动 跨今天预订会议室的所有用户帐户活动 哪个谷歌日历 api 调用可以给我这个 我从 Google 日历资源 api 获取房间详细信息 但无法获取不同帐户
  • 是否需要“do {...} while ( )”循环?

    Bjarne Stroustrup C 创建者 曾经说过 他避免使用 do while 循环 而更喜欢用 while 循环来编写代码 参见下面的引用 自从听到这件事后 我发现这是真的 你怎么看 有没有一个例子 其中 do while 比使用
  • Socket.IO:XHR 轮询断开连接延迟

    我正在使用 socket io 和 node js 我在跟踪哪些用户在线时遇到问题 因为套接字 IO 识别 XHR 轮询客户端已断开连接之前有几秒钟的延迟 如果 XHR 轮询客户端刷新页面 他们的新连接消息似乎先于断开连接消息 当尝试跟踪哪
  • 如何使用open id作为登录系统

    我想尝试在我要创建的网站上使用开放 ID 作为登录系统 我已经查看了这个网站 但我不太确定这一切是如何运作的以及如何使其发挥作用 http remysharp com 2007 12 21 how to integrate openid a
  • 使用 SonarQube 5.2 构建 Breaker 插件

    似乎是构建断路器插件不再与 SonarQube 5 2 兼容 如果声纳门未满足 是否有任何替代方案可以避免 VSO 构建失败 或者是否计划将 Build Breaker 插件更新到 5 2 目前 没有任何插件会在质量门未通过时破坏构建声纳Q
  • 如何获取菜单项的操作视图?

    这是我的代码 home xml
  • 可以选择在 Angular 4 中应用 http 拦截器

    以下 url 解释了如何在 Angular 4 中使用 http 拦截器 https angular io guide http intercepting all requests or responses 但是 我想知道是否有什么方法可以
  • 使用 Microsoft Graph API 创建“作为在线会议的活动”或仅创建在线会议

    任何在特定租户下登录我们系统 IdentityServer 作为身份验证 的用户都应该能够创建在线会议 MS Teams 活动 我们跟随使用 Microsoft Graph 构建 ASP NET Core MVC 应用程序 and 创建并启
  • 使用mockito模拟构造函数

    我想将构造函数模拟为方法 public String generaID GeneraIDParaEntidadCliente aux new GeneraIDParaEntidadCliente nombre registro entida
  • 将 seeds.rb 分成多个部分?

    我想将 seeds rb 文件分成多个部分以便于维护 将所有 A 种子放入 a rb 中 将 B 种子放入 b rb 中 等等 单独的文件位于 db 目录中 包含 seeds rb 每个文件都包含一堆 A create 或 B create
  • 如何从频繁访问的表中删除多行

    我需要删除一个非常大的表 例如 500 万行 的大部分 例如 90 该表的另外 10 被频繁读取 但不被写入 From 按 ID 删除数百万行的最佳方法 我认为我应该删除要删除的 90 上的所有索引 以加快该过程 除了我用来选择要删除的行的
  • 在 Swift WKWebView 中捕获 window.postMessage

    我正在开发一个 swift ios 应用程序 它使用WKWebView加载电子商务网站 当用户在这里购买产品时 结帐页面允许用户用加密货币付款 当用户点击 在钱包中打开 时 网站会弹出一个 window postMessage paymen
  • 转置数据框,将第一列保持为标题

    我有一个大数据框 但小例子如下 mydf lt data frame A c letters 1 10 M1 c 11 20 M2 c 31 40 M3 c 41 50 我想转置数据框并将第 1 列 A 保留为列标题 字母 1 10 作为变
  • 减小 Cordova apk 的大小

    我正在开发一个混合应用程序 现在我在phonegap和cordova之间陷入了困境 Cordova 现在在我的电脑中 当我执行 cordova build android 我得到的 apk 大小为 3 7 mb 不过 如果我使用 build
  • iPhone/iOS:如何判断手机在运行时使用的本地化版本?

    我在本地化应用程序时遇到了困难 它需要本地化为波斯语 伊朗波斯语 不仅如此 当选择 fa IR 作为本地化时 它还需要使用阳历 该操作系统有一个波斯日历 我使用它没有问题 但我需要知道fa IR本地化已被选择 雪上加霜的是 我无法在美国测试
  • 远程 gdb 调试不会在断点处停止

    我在调试修改后的 Linux 3 11 0 内核时遇到问题 为了调试代码 我使用 GDB 7 6 QEMU 1 6 5 Linux内核3 11 0 我的系统有 Intel R Core TM i7 2760QM CPU 2 40GHz 运行