RJ436 2024-09-23 22:41 采纳率: 0%
浏览 2

ubuntu24.4 系统 qemu-system-aarch64 +gdb-multiarch 调试内核设置断点无法断住.

最近使用ubuntu24.4 系统 qemu-system-aarch64 +gdb-multiarch 调试内核设置断点无法断住.

系统信息:

Ubuntu 版本(24.04)
调试的内核版本:5.0.0
qemu 版本:
qemu-system-aarch64 --version
QEMU emulator version 8.2.2 (Debian 1:8.2.2+ds-0ubuntu1.2)
Copyright (c) 2003-2023 Fabrice Bellard and the QEMU Project developers

gdb 版本:gdb-multiarch --version
GNU gdb (Ubuntu 15.0.50.20240403-0ubuntu1) 15.0.50.20240403-git
Copyright (C) 2024 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.

复现步骤:
1.使用 qemu 启动系统:qemu-system-aarch64 -machine virt -cpu cortex-a57 -machine type=virt -m 1024 -smp 4 -kernel arch/arm64/boot/Image --append "noinitrd root=/dev/vda rw console=ttyAMA0 loglevel=8" -nographic -drive if=none,file=rootfs_ext4.img,id=hd0 -device virtio-blk-device,drive=hd0 --fsdev local,id=kmod_dev,path=$PWD/kmodules,security_model=none -device virtio-9p-device,fsdev=kmod_dev,mount_tag=kmod_mount -S -s
2.使用 gdb-multiarch 连接调试:gdb-multiarch vmlinux
(gdb) target remote localhost:1234
Remote debugging using localhost:1234
0x0000000040000000 in ?? ()
(gdb) b start_kernel
Breakpoint 1 at 0xffff2000126704ec: file init/main.c, line 538.
(gdb) c
Continuing.

  • 写回答

3条回答 默认 最新

  • 一轮明月照丘壑 2024-09-23 22:42
    关注

    以下回复参考:皆我百晓生券券喵儿等免费微信小程序作答:

    从你的描述来看,你正在使用 QEMU 和 gdb-multiarch 进行内核调试,但在设置断点后,无法成功中断执行。这种情况可能由多种原因引起,下面是一些可能的解决方案:

    1. 确保内核配置支持调试:你需要确保你的内核配置启用了调试信息。这通常需要在编译内核时启用 -g 选项来包含调试信息。
    2. 检查断点的地址:确认你设置的断点地址是正确的。你可以使用 info breakpoints 命令来查看当前设置的断点信息。
    3. 确保 QEMU 进程仍在运行:在你使用 c 命令继续执行后,确保 QEMU 进程仍在运行并且没有被终止。
    4. 检查你的复现步骤:确认你的 QEMU 启动命令和 gdb 调试命令没有错误,并且与你调试的内核版本相匹配。
    5. 检查内核版本和 gdb 版本兼容性:有时,特定版本的内核可能与特定版本的 gdb 不完全兼容。尝试更新你的 gdb 版本,或者使用一个与你的内核版本更兼容的 gdb 版本。
    6. 检查硬件仿真设置:确认你的 QEMU 硬件参数设置正确,特别是 CPU 类型和内核启动参数。
    7. 尝试不同的断点类型:有时,硬件断点可能不起作用,你可以尝试使用软件断点(如果支持)。在 GDB 中,可以使用 hw_breakpoint 命令来查看和设置硬件断点。
    8. 检查系统日志和 GDB 输出:查看系统日志和 GDB 的输出信息,看是否有任何错误或警告信息,这可能会提供关于问题的线索。
    9. 尝试简化问题:尝试在一个更简单的环境中进行调试,例如仅使用一个基本的内核启动配置,并逐步添加更多配置,以确定问题出现的地方。

    如果上述建议都不能解决问题,建议查阅相关文档或寻求更具体的帮助,可能的话提供更多的错误信息或日志会更有帮助。

    评论

报告相同问题?

问题事件

  • 创建了问题 9月23日

悬赏问题

  • ¥15 35114 SVAC视频验签的问题
  • ¥15 impedancepy
  • ¥15 在虚拟机环境下完成以下,要求截图!
  • ¥15 求往届大挑得奖作品(ppt…)
  • ¥15 如何在vue.config.js中读取到public文件夹下window.APP_CONFIG.API_BASE_URL的值
  • ¥50 浦育平台scratch图形化编程
  • ¥20 求这个的原理图 只要原理图
  • ¥15 vue2项目中,如何配置环境,可以在打完包之后修改请求的服务器地址
  • ¥20 微信的店铺小程序如何修改背景图
  • ¥15 UE5.1局部变量对蓝图不可见