【问题标题】:Attach GDB to Qemu running different kernels on each smp将 GDB 附加到在每个 smp 上运行不同内核的 Qemu
【发布时间】:2020-02-17 06:08:31
【问题描述】:

如何将gdb 附加到ARM Qemu 板上,每个smp 运行不同的内核?当我使用gdb选项时,我只能在gdb中使用file选项指定一个内核。

Qemu 命令:

qemu-system-aarch64 -M virt -smp 2 \
-display none -nographic \
-device loader,file=f1.axf,cpu-num=0 \
-device loader,file=f2.axf,cpu-num=1 -s -S

gdb 命令运行:

gdb-multiarch
target remote localhost:1234
file f1.axf

在此之后,gdb 显示两个线程,都将调试源显示为 f1.axf

如果我在文件选项中传递f2.axf,线程都会显示来自f2.axf 的源和调试信息。

gdb没有错误信息

设置:

  • 主机:Ubuntu 18.04,64位
  • 嘉宾:Qemu Arm
  • GDB Multiarch:在主机上运行 (Ubuntu)

【问题讨论】:

  • 欢迎来到 SO。请编辑您的问题并添加您迄今为止尝试过的gdb 调用语句以及错误消息或简短说明什么不起作用。还请澄清您的设置:gdb 在哪里运行,正在调试的进程执行的主机在哪里,您的Qemu 设置看起来如何...
  • 尝试根据您的评论添加信息,不清楚。
  • 只是猜测:使用两个终端并在每个终端中打开gdb 以连接到一个终端中的f1.axf 和另一个终端中的f2.axf
  • 但我只能通过一个 GDB 连接,因为只有一个 gdbserver 存在。其他 GDB 无法连接。

标签: gdb qemu gdbserver


【解决方案1】:

我必须在我的 Qemu 板文件中添加每个 smp cpu 作为 Arm Cpucluster。确保为每个 cpu 分配不同的集群索引,否则它们将附加到同一个 GDB。因此,对于 N 个集群,您可以附加 N 个 gdb。之后 gdb 可以连接到 Qemu 监听端口 1234,使用以下命令:

gdb-multiarch
target extended :1234
file f1.axf
add-inferior
inferior 2
attach 2
file f2.axf
info thread

添加尽可能多的低级 CPU 集群。要附加到集群 4,请在 gdb 中添加命令 attach 4

【讨论】:

    猜你喜欢
    • 2022-07-08
    • 1970-01-01
    • 2014-03-12
    • 1970-01-01
    • 2013-06-22
    • 2021-02-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多