在 macOS Big Sur 上如何安装 Valgrind?

3
我最近购买了一台M1 MacBook Pro,但在macOS Big Sur上安装valgrind时遇到了问题。
我已经尝试了以下方法:
- 运行"brew install valgrind"命令,但是弹出如下错误(brew已更新):
Error: invalid attribute for formula 'valgrind': version (nil) - 根据这里的说明编辑头文件。 - 从GitHub手动下载并按照所有指示操作,但是无法成功安装。
Last 15 lines from /Users/homeuser/Library/Logs/Homebrew/valgrind/03.make:
/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/mach/i386/thread_status.h:254:9: error: unknown type name '_STRUCT_X86_DEBUG_STATE64'
typedef _STRUCT_X86_DEBUG_STATE64 x86_debug_state64_t;
        ^
/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/mach/i386/thread_status.h:260:9: error: unknown type name '_STRUCT_X86_PAGEIN_STATE'
typedef _STRUCT_X86_PAGEIN_STATE x86_pagein_state_t;
        ^
/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/mach/i386/thread_status.h:266:9: error: unknown type name '_STRUCT_X86_INSTRUCTION_STATE'
typedef _STRUCT_X86_INSTRUCTION_STATE x86_instruction_state_t;
        ^
fatal error: too many errors emitted, stopping now [-ferror-limit=]
20 errors generated.
make[2]: *** [fixup_macho_loadcmds] Error 1
make[2]: *** Waiting for unfinished jobs....
make[1]: *** [all-recursive] Error 1
make: *** [all] Error 2

不幸的是,这些方法都不起作用,所以我真的很希望解决这个问题,因为我需要每天使用valgrind来完成大学作业。


看起来,根据这里的信息,valgrind完全不支持Apple Silicon。 - molbdnilo
我担心有人会这么说。谢谢! - MicRep
参见:https://dev59.com/C1EG5IYBdhLWcg3wcN3q - David J.
1个回答

7

明确的答案。请查看configure.acautoconf文件以获取确切细节。从第5021行开始[显然可能在将来版本中改变],有一个内核版本的开关。

Valgrind官方支持的macOS最新版本是Intel架构下的10.13版本。不支持任何架构下的macOS 11/12和ARM。

要让Valgrind在macOS 11/12 ARM硬件上工作需要:

  • 填补从10.13到11/12之间所有的差距
  • 为像syscalls这样的低级函数编写ARM汇编代码

Linux有ARM支持,所以第二点可能不那么困难。我没有ARM基础的Mac,暂时不会自愿参加。


你的回答很有帮助,所以谢谢你——但是说“明确的答案”听起来有点过于自信。在我看来,“明确的”答案往往是源项目文档的直接引用。包含指向项目更改日志和/或其他文档的超链接真的很有帮助。从你的个人资料来看,你似乎为Valgrind做出了贡献(感谢!)。我认为这样说比说它是“明确的”更具可信度。 - David J.
2
我维护FreeBSD Valgrind端口,并尝试关注Solaris和macOS。我将添加对相关文件的引用。 - Paul Floyd

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接