好吧,我安装了 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?
我之前没有在 macOS 上使用过 GDB。但我猜您遇到的问题是 macOS 上的某些安全技术与 MS Windows 不同。您可能需要一些额外的配置来进行代码签名和系统完整性保护(SIP),以便 GDB 可以调试您的 C 程序。老实说,它可能很复杂,我不知道如何设置它们。
我认为还有一个更多 macOS 采用的替代方案 :
如果您不需要坚持使用 GDB,可以尝试 LLDB。 LLDB 通常与 macOS 集成得更多,包括 ARM64 架构。它也是 Xcode 中的默认调试器。
干杯
那是因为
gdb
尚未适用于 Apple 芯片(ARM 架构)。事实上,两者都不是gcc
。如果你运行 gcc --version
,你会发现实际上你的 Mac 正在将 gcc 别名为 clang (Apple clang)。
brew
告诉您的是您不能将gdb用于本机编译的代码。你使用的是aarch64-elf-gdb
,是一个跨平台开发的调试器。换句话说,Apple mac 用户为 Linux 开发,编写 elf 二进制文件。显然,您将无法在 Mac 上使用这些二进制文件。
附录:另一个答案关于一件事是正确的。现在,您对本机二进制文件的最佳选择是
LLDB
。但你必须学习稍微不同的语法。