优胜美地和Valgrind

109

请问如何在yosemite上安装Valgrind? 当我尝试安装时,会出现“检查内核版本...不支持(14.0.0)configure:error:Valgrind适用于Darwin 10.x、11.x、12.x和13.x(Mac OS X 10.6 / 7/8/9)”的错误提示。

目前没有官方路径或更新方法,我也没有找到任何解决方法(除了http://comments.gmane.org/gmane.comp.kde.devel.bugs/1553705,但他们并没有解决这个问题)。


4
“Homebrew”存在已知问题(https://github.com/Homebrew/homebrew/issues/29988),并附有一份不太友好的说明:“由于上游开发时间表,短期内不太可能得到修复。” - hrbrmstr
@hrbrmstr,谢谢,我已经通过在虚拟机上安装Ubuntu并在Ubuntu上安装valgrind来解决了这个问题。 - Nikita Kozlov
12个回答

286

由于没有支持Yosemite的稳定版本,您可以安装最新的开发版。

brew install --HEAD valgrind

5
这个命令不再起作用了。我收到了这个消息:错误:无法下载资源“valgrind--patch” 下载失败:https://gist.githubusercontent.com/jacknagel/cd26a902d72aabd0b51d/raw/1a61a328a87a728dccbeef0594f6fe335e9bf917/valgrind-sdk-paths-Makefile-am.diff - André Caron
1
尽管在发布时这是正确的解决方案,但现在Valgrind通过应用程序的文档发布渠道支持OS X Yosemite。 - e76d587d9

50

之前的OS X版本中,Valgrind通常需要一段时间才能支持合理的功能,但由于在预发布的Yosemite上进行了大量工作,因此基本的OS X 10.10支持已经在Valgrind trunk中提供。

来自邮件列表:

最近有一些努力改善Valgrind对Yosemite的支持。如果您在Mac OS上进行开发,可以尝试使用trunk(svn co svn://svn.valgrind.org/valgrind/trunk),并报告任何错误。 Yosemite的支持已经足够好了,至少一个大型图形应用程序(Firefox)可以正常运行。对于上一个版本10.9(Mavericks),支持也得到了实质性的改善。

请注意,该工作仅针对64位进程,32位可能可以工作,并且在Mavericks上可能会更好,但我怀疑它在Yosemite上将越来越成为问题,因为Valgrind的32位x86指令集支持未能超过SSSE3。

Julian Seward

http://sourceforge.net/p/valgrind/mailman/message/33047840/

全面披露:我是为支持OS X 10.10做出贡献的新Valgrind开发人员之一


14
感谢为Valgrind做出贡献。我在我的代码上运行它,它指出了我一直被困扰24小时的分段错误原因,而我自己找不到原因。请+1以示感谢。 - ArtOfWarfare

11

Valerio的svn工作流会下载每个分支,这样会耗费大量时间和资源。更好的方法是只下载主干:

svn co svn://svn.valgrind.org/valgrind/trunk valgrind
cd valgrind
./autogen.sh
./configure
make
make install

注意到下载这个文件比发布的源代码.tar.bz要慢得多...是压缩导致了如此大的差异还是实际上下载了其他文件?(我猜可能是不同的服务器...或者是svn cocurl之间的差异...) - ArtOfWarfare
+1:非常好用。我唯一改变的是在最后使用了 sudo make install 而不是 make install。不确定是否必要,因为我没有尝试过你的方法。 - ArtOfWarfare

8
这是我的看法。我基本上有一个安装了xcode的干净的mac电脑。 以下方法帮助我编译和运行它:
# build/install autoconf/automake/libtool so that 'autogen' works
curl -OL http://ftpmirror.gnu.org/autoconf/autoconf-2.69.tar.gz
tar -xzf autoconf-2.69.tar.gz 
cd autoconf-2.69
./configure && make && sudo make install
cd ..

curl -OL http://ftpmirror.gnu.org/automake/automake-1.14.tar.gz
tar -xzf automake-1.14.tar.gz
cd automake-1.14
./configure && make && sudo make install
cd..

curl -OL http://ftpmirror.gnu.org/libtool/libtool-2.4.2.tar.gz
tar -xzf libtool-2.4.2.tar.gz
cd libtool-2.4.2
./configure && make && sudo make install
cd ..

svn co svn://svn.valgrind.org/valgrind/trunk valgrind
cd valgrind
./autogen.sh
# important: configure-params, otherwise make ends in errors 
./configure -disable-tls --enable-only64bit --build=amd64-darwin 
make
# sudo, otherwise it fails due to permissions 
sudo make install  

请注意,valgrind-3.11.0 SVN的callgrind_control在OS X上似乎不起作用,看起来像一个perl脚本,它运行的命令行工具(vgdb -l)打印出一些“意外”的内容,而该脚本无法正确解析(因此它将无法找到使用valgrind运行的其他进程)。
或者,Perl脚本只是调用vgdb,我们也可以直接这样做(只需手动确定您的进程ID):
vgdb --pid=2858 instrumentation on

太棒了,这正是我需要在Yosemite 10.10.4上运行valgrind的内容。唯一的问题是,上面表示-disable-tls开关的命令中使用了Unicode连字符,而不是常规的ASCII连字符。 - Tim Kane
很高兴能够帮忙 - 感谢指出连字符(已更新)。还为callgrind_control问题添加了解决方法。 - kalmiya

7

我在10.10.1上成功执行了此操作:

svn co svn://svn.valgrind.org/valgrind
cd valgrind
./autogen.sh
./configure
make
make install

尝试过了。在下载了许多无关的测试时,我放弃了。 - GrantJ
1
从开发者的角度来看,回归测试是Valgrind程序的重要组成部分。尽管最近改进了对OS X平台的支持,但官方的Valgrind发布版本尚未推出,不幸的是您需要下载带有测试的版本。如果由于连接问题而导致SVN下载困难,则可以使用非官方的GitHub存储库:https://github.com/liquid-mirror/valgrind - e76d587d9

6
所有这里列出的解决方案都不能解决我的问题。最终有效的方法是使用Mac Ports。
sudo port install valgrind-devel

3

以下是使用官方svn以外的替代来源安装它的方法(因为官方svn似乎间歇性地不可用)。

https://crispyappstudiosblog.wordpress.com/2015/07/07/installing-valgrind-on-osx-yosemite/

1) Navigate to this git mirror of the svn and download the latest available version: http://repo.or.cz/w/valgrind.git

2) You need VEX as well, so grab the latest version here: http://repo.or.cz/w/vex.git

3) Extract both of them. Put the entire contents of the VEX folder into a folder called VEX in the top level of the valgrind directory.

cd to the valgrind directory, and execute the following:

Run ./autogen.sh

Run ./configure

Run make

Run sudo make install

Test it out by running valgrind --version You should be running at least 3.11.0 SVN for it work on Yosemite. Valgrind 3.11.0 SVN running on OSX Yosemite 10.10.4


3

我在Mac上安装时,首先安装了homebrew,然后在终端中运行以下3个命令:

  1. brew update
  2. brew doctor
  3. brew install --HEAD valgrind

注意:我使用的是Os X El Capitan (10.11),但这个方法适用于之前的版本。


任何比它更新的版本都会出现以下错误: valgrind:由于上游不兼容性,此公式在macOS El Capitan之后的版本中无法编译或正常使用。 - Alex

2

我终于在我的OSX El Capitan 10.11.12上成功使用了Valgrind

用户Kalmiya的答案对我来说很有效,但需要先安装Xcode命令行工具。

在终端中输入以下内容:

xcode-select --install

现在请按照Kalmiya的帖子一步一步操作。 https://dev59.com/W18d5IYBdhLWcg3wpzv4#30366798


我的MacBook Pro已经更新到最新的Mac OS版本,是10.11.3而不是10.11.12!另外,你的建议对我没有起作用。出现了错误信息“Assertion 'tst->os_state.pthread - magic_delta == self' failed.” - S.M.Mousavi
@S.M.Mousavi "Assertion 'test->os_state.pthread - magic_delta == self'" 错误已经在 SVN 开发版本中修复了 Valgrind。 - e76d587d9
@RhysKidd 非常感谢您提供的信息 :) - S.M.Mousavi

0

我在Yosemite上编译了valgrind,但不得不使用hack来完成。虽然我认为你应该使用xcode-select install来获取所有命令行工具(之后valgrind应该可以正常运行),但如果你不想这样做(例如Xcode工具的大小太大),你也可以获取Darwin OSX代码并将以下文件复制到/usr/include/mach

   mach_vm.defs
    task.defs
    thread_act.defs
    vm_map.defs

这样可以干净地编译和安装,但请注意它是一种相当松散的黑客。


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