如何在M2 Macbook (Air)上运行GDB?

问题描述 投票:0回答:2

好吧,我安装了 GDB,

brew install aarch64-elf-gdb

安装了aarch64-elf-gdb。然后为了方便起见,我为

aarch64-elf-gdb
起了一个别名
alias gdb="aarch64-elf-gdb"

为什么不只是

brew install gdb
?因为,我做到了,它说,

gdb:该软件需要x86_64架构。

我编译了以下文件

test.c

int main(int argc, char *argv[]) {
  return 0;
}

使用命令

gcc -g -o test test.c
并通过
gdb ./test
运行调试器。这导致,

[snip]./test”:不是可执行格式:无法识别文件格式

这是整个事件发生的截图。

这是一个配置问题吗?也许我缺少一个标志?或者,是不是就无法在 M2 机器上运行 GDB?

c macos gdb arm64
2个回答
1
投票

我之前没有在 macOS 上使用过 GDB。但我猜您遇到的问题是 macOS 上的某些安全技术与 MS Windows 不同。您可能需要一些额外的配置来进行代码签名和系统完整性保护(SIP),以便 GDB 可以调试您的 C 程序。老实说,它可能很复杂,我不知道如何设置它们。

我认为还有一个更多 macOS 采用的替代方案 :

如果您不需要坚持使用 GDB,可以尝试 LLDB。 LLDB 通常与 macOS 集成得更多,包括 ARM64 架构。它也是 Xcode 中的默认调试器。

还有如何设置和使用 LLDB 的教程

干杯


1
投票

那是因为

gdb
尚未适用于 Apple 芯片(ARM 架构)。事实上,两者都不是
gcc
。如果你运行
gcc --version
,你会发现实际上你的 Mac 正在将 gcc 别名为 clang (Apple clang)。

brew
告诉您的是您不能将gdb用于本机编译的代码。你使用的是
aarch64-elf-gdb
,是一个跨平台开发的调试器。换句话说,Apple mac 用户为 Linux 开发,编写 elf 二进制文件。显然,您将无法在 Mac 上使用这些二进制文件。

附录:另一个答案关于一件事是正确的。现在,您对本机二进制文件的最佳选择是

LLDB
。但你必须学习稍微不同的语法。

© www.soinside.com 2019 - 2024. All rights reserved.