gdb - 为 ESP32 和 QEMU 构建 GDB

标签 gdb qemu esp32

我尝试为 esp32 构建一个与 qemu 一起使用的 gdb,但经过多次尝试,我没有成功。连接到远程目标后,我的所有尝试都导致出现以下错误消息:远程“g”数据包回复太长

现在我正在使用 Ebiroll 的预构建版本:https://github.com/Ebiroll/qemu_esp32/blob/master/bin/xtensa-esp32-elf-gdb 但我想使用比 7.10 更新的 gdb 版本,有人成功了吗?

这是我构建 gdb 的方法:

git clone --depth 1 --branch esp-2021r2-gdb https://github.com/espressif/binutils-gdb.git
cd binutils-gdb
mkdir -p build
cd build
../configure --without-guile --host=x86_64-pc-linux-gnu --target=xtensa-esp32-elf --disable-werror
make
make install

(请注意,此分支中要从 Zephyr 项目应用的补丁,如此处所述 https://github.com/Ebiroll/qemu_esp32#qemu-esp32 ,似乎已包含在内)

我还尝试了应用以下补丁(没有成功):

curl -L https://raw.githubusercontent.com/Ebiroll/gdb/master/gdb/xtensa-config.c.qemu --output binutils-gdb/gdb/xtensa-config.c

或者修补qemu以修复num_regs的值(尝试过104和172,也没有成功)。

最佳答案

乐鑫 qemu wiki提到设置环境变量以仅列出核心寄存器:

export QEMU_XTENSA_CORE_REGS_ONLY=1

这需要在执行 qemu 的环境中设置。

我的建议是同时使用 Espressif 提供的 qemu 和 gdb(来自 Esp32 tool chain )。我最近成功地使用了这种组合。最新版本使用 gdb 9.2。

关于gdb - 为 ESP32 和 QEMU 构建 GDB,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70644426/

相关文章:

Qemu 支持 ACPI 2.0+

QEMU+Virt-manager 无法连接到 virtlxcd-sock

linux - QEMU 简单后端跟踪不打印任何内容

c - ESP32如何重置与PCNT一起使用的GPIO引脚,以便它们也可以用于EXT1从深度 sleep 中唤醒?

arduino - ESP32 Arduino-ide如何获取唯一id

ios - 电话上的task_for_pid()权限是否由内核编码?

objective-c - 运行代码返回垃圾;在调试器中输入会返回正确的结果

gdb 不会从外部架构读取核心文件

python - 使用 gdb 加载 ctypes 的调试库

esp32 - 两个 ESP32 之间的串行通信