【问题标题】:GDB Debugging a Raspberry Pi via QEMUGDB 通过 QEMU 调试 Raspberry Pi
【发布时间】:2018-09-13 09:07:37
【问题描述】:

关于使用 gdb-multiarch 从 linux x64 主机调试 Raspberry pi 3 以及编写一般的裸机程序,我有多个问题。我们目前面临一个问题,我们的代码似乎没有加载到内存中。当我们开始在 GDB 中调试时,我们从地址 0 开始。向下 3 条指令我们跳转到 0x10000。如果我修改链接器脚本以将 Raspberry pi 放入任一地址,我会得到相同的结果,我们会跳转到 0x10000 并且我们的代码没有加载到那里。相反,我们得到了这个

我们还注意到,当我们应该调试 64 位代码时,GDB 在这里使用 32 位寄存器名称。

再次回顾一下我们正在使用的内容: QEMU 与多功能 pb 机器。 一个 aarch64 GCC 交叉编译器。 GDB 多架构。

我们在两个不同的主机上进行了尝试:在 virtualbox 中运行的 Ubuntu 16.04 x64 主机。 Mint x64 本机运行。 我们还尝试了 arm-none-eabi 工具链,但遇到了无法将我们的代码编译为 64 位的问题。

非常感谢您的帮助!谢谢!

【问题讨论】:

    标签: gcc gdb raspberry-pi3 qemu


    【解决方案1】:

    您没有提供命令行,但“versatile-pb”是一种仅限 32 位的板卡类型,因此尝试在其上运行 64 位代码会以令人困惑的方式出现错误行为。您需要告诉 QEMU 模拟一个支持 64 位的板,该板与您的裸机代码期望在其上运行。

    在 QEMU 2.12 中将有一个“raspi3”QEMU 板,它可能对您有所帮助;如果您想尝试一下,您现在需要尝试构建最新的 2.12 候选版本 tarball(2.12 版本还要等几周才能发布)。否则,如果您确保裸机代码能够在该板上运行,则可以使用“virt”板。

    【讨论】:

      猜你喜欢
      • 2014-05-31
      • 2019-09-30
      • 2011-06-09
      • 2015-05-06
      • 2016-12-14
      • 2020-05-24
      • 1970-01-01
      • 1970-01-01
      • 2019-06-15
      相关资源
      最近更新 更多