x86主机使用aarch64-poky-linux-gdb调试GTest单元测试失败求助
调试ARM64架构GTest单元测试可执行文件的解决方法
核心原因
你使用的是交叉编译版GDB(aarch64-poky-linux-gdb),它无法直接在x86主机上运行ARM64架构的程序,必须配合模拟器或远程目标环境才能执行调试,这是run命令报错的根本原因。
可行调试方案
方案1:借助QEMU用户态模拟器本地调试
- 确认主机已安装
qemu-aarch64(Poky SDK环境一般自带,缺失可通过系统包管理器补充) - 启动GDB后按以下步骤配置:
- 设置QEMU为程序运行器,指定ARM64根文件系统路径:
替换路径为你实际的Poky SDK ARM64根文件系统路径set exec-wrapper qemu-aarch64 -L /opt/poky/3.1/sysroots/aarch64-poky-linux - 加载目标可执行文件:
file ./unittests/ut_settings - 设置GTest过滤参数:
set args --gtest_filter=SettingsTestSuite.testParseStatus - 执行
run启动调试
- 设置QEMU为程序运行器,指定ARM64根文件系统路径:
方案2:远程调试(连接ARM64硬件/虚拟机)
如果有实际ARM64开发板或虚拟机:
- 在目标机上启动GDB服务器:
确保目标机已安装gdbserver :1234 ./unittests/ut_settings --gtest_filter=SettingsTestSuite.testParseStatusgdbserver - 在x86主机的交叉GDB中建立连接:
连接成功后,即可用file ./unittests/ut_settings target remote <目标机IP地址>:1234continue、break等命令进行调试
方案3:兼容性检查
- 确认
ut_settings是用同款Poky SDK交叉编译,且编译时添加了-g调试参数(确保包含调试信息) - 验证交叉GDB版本与编译工具链版本匹配,避免版本差异导致的兼容性问题
内容的提问来源于stack exchange,提问作者helianthus
相关产品推荐
相关产品推荐

