0

我正在尝试使用 GDB 调试在 m68k 架构上运行的 Qemu。我正在尝试对 Qemu 源代码进行一些更改以向 m68k 支持添加一些功能,并且我正在尝试使用 GDB 来测试我当前所做的更改。需要注意的重要一点是,我使用的是 Qemu v5.2.0-rc1,因为这是我正在同时使用的更大系统中当前使用的 Qemu 版本。目前,我正在使用 qemu-system-m68k 在该架构上运行 buildroot(uClinux 内核),使用 gdb 的“-s -S”选项。在一个单独的终端中,我尝试使用在该远程目标上运行 GDB (gdb) target remote localhost:1234,但我收到以下错误消息:

warning: Architecture rejected target-supplied description

与 uClinux Qemu 内核的连接似乎没问题,但我无法连接到远程主机。

我已经尝试找到任何可能的解决方案来解决这个问题,包括设置 GDB 架构(目前说 i386,不确定这是否正确),但它不起作用。我不知道如何让 GDB 在这个 m68k Qemu 仿真 Linux 内核上运行,任何帮助都会很棒。谢谢!

4

1 回答 1

0

错误信息意味着 QEMU 的 gdb stub 向 gdb 发送了关于 CPU 是什么的描述(主要是寄存器列表),而 gdb 不理解它。造成这种情况的一个常见原因是尝试使用 gdb 调试错误的架构。

您需要使用了解目标架构的 gdb。在 Ubuntu 上有一个“gdb-multiarch”包,它有一个 gdb-multiarch 二进制文件,它不仅知道 x86。否则,您可能需要从源代码构建 gdb。您可以通过不带参数运行它并输入命令来检查您的 gdb 是否知道 m68k set arch m68k。如果它回复The target architecture is assumed to be m68k了,那就没关系(而且你的问题更复杂);如果它给您一个错误(例如Undefined item: "m68k"),那么您需要使用不同的 gdb。

于 2021-06-15T13:59:55.507 回答