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

如何在最新macOS上通过QEMU运行调试Linux ARM64汇编代码?

在最新版macOS上调试ARM64裸机程序(QEMU + GDB)

1. 安装正确的工具链

用Homebrew安装所需工具:

  • 安装ARM64交叉编译工具链:brew install aarch64-linux-gnu-binutils aarch64-linux-gnu-gcc
  • 安装QEMU的ARM64模拟器:brew install qemu
  • 安装多架构GDB:brew install gdb-multiarch

注意:如果之前装过错误的工具链,先卸载:brew uninstall --force 旧工具包名称

2. 处理GDB的macOS权限问题

macOS的安全机制会阻止未签名的GDB调试程序,需完成以下配置:

  1. 打开「钥匙串访问」,创建自签名代码签名证书:
    • 菜单「钥匙串访问」→「证书助理」→「创建证书」
    • 名称填gdb-cert,身份类型选「自签名根证书」,证书类型选「代码签名」,勾选「让我覆盖这些默认值」
    • 一路下一步,最后将证书位置设为「系统」,输入密码确认
  2. 找到刚创建的gdb-cert证书,右键→「显示简介」→「信任」,将「代码签名」设为「始终信任」
  3. 重启电脑(必须重启才能生效)
  4. 给gdb-multiarch签名:
    sudo codesign -fs gdb-cert $(which gdb-multiarch)
    

3. 编译ARM64裸机汇编程序

假设你的hello.s是树莓派4兼容的ARM64裸机代码,编译步骤如下:

  1. 汇编生成目标文件:
    aarch64-linux-gnu-as -o hello.o hello.s
    
  2. 创建裸机链接脚本linker.ld(指定树莓派4的内核加载地址):
    ENTRY(_start)
    SECTIONS {
      . = 0x80000;  /* 树莓派4的内核起始加载地址 */
      .text : { *(.text) }
      .data : { *(.data) }
      .bss : { *(.bss) }
    }
    
  3. 链接生成ELF可执行文件:
    aarch64-linux-gnu-ld -T linker.ld -o hello.elf hello.o
    

4. 启动QEMU并等待调试

启动QEMU模拟树莓派4,开启调试端口:

qemu-system-aarch64 -M raspi4b -kernel hello.elf -s -S -serial stdio
  • -M raspi4b:模拟树莓派4B硬件
  • -kernel hello.elf:加载编译好的ELF文件
  • -s:开启默认1234端口的GDB调试服务
  • -S:启动后暂停执行,等待GDB连接
  • -serial stdio:将串口输出重定向到终端

5. 用GDB连接调试

打开新终端窗口,启动gdb-multiarch并连接QEMU:

gdb-multiarch hello.elf

在GDB命令行中输入以下命令开始调试:

target remote localhost:1234

常用调试命令:

  • break _start:在程序入口点设置断点
  • continue:恢复程序执行
  • step:单步执行汇编指令
  • info registers:查看ARM64寄存器状态
  • x/10i $pc:查看当前PC指针附近的10条汇编指令

内容的提问来源于stack exchange,提问作者Max Sedlusch

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.13 01:18:23