You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Win10主机远程调试VirtualBox中Ubuntu虚拟机程序失败问题

解决Mingw64 GDB连接Ubuntu GDBserver的架构/寄存器解析错误

核心解决方案

  • 替换为交叉编译GDB:安装x86_64-linux-gnu-gdb(针对Linux x86_64目标的交叉GDB)替代Mingw64默认的gdb。Mingw原生gdb是为Windows平台构建的,缺乏GNU/Linux OS ABI的处理支持,即使架构同为x86_64,也无法正确解析Linux目标的寄存器和二进制格式。

  • 配置本地sysroot避免远程文件传输:

    1. 将Ubuntu虚拟机中的./application及符号文件复制到Win10主机本地目录(比如C:\ubuntu-target\)
    2. 在GDB中执行以下命令再连接:
      set sysroot C:\ubuntu-target
      file C:\ubuntu-target\application
      target remote 192.168.0.24:9999
      
  • 确认两端版本匹配:在Ubuntu中执行file ./application确保输出包含x86-64,gdbserver --version确认是64位版本;在Win10中确认交叉GDB版本与Ubuntu的gdbserver版本尽量接近(避免协议不兼容)。

错误原因分析

虽然主机和虚拟机都是x86_64架构,但Mingw64默认GDB是针对Windows PE二进制和Windows系统调用设计的,没有内置GNU/Linux ELF二进制和Linux OS ABI的处理逻辑。远程连接时,gdbserver发送的Linux格式寄存器数据和ELF文件信息,无法被Windows版GDB正确解析,从而出现"Architecture rejected target-supplied description"和"Remote register badly formatted"错误。

内容的提问来源于stack exchange,提问作者Misko Jones

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.19 10:35:36