为什么瓦尔格林德说杀死 9 对于一个非常简单的程序

Why is Valgrind saying killed 9 for a very simple program?

本文关键字:于一个 非常 简单 程序 林德 为什么      更新时间:2023-10-16

我在两个非常简单的'hello world'程序上运行valgrind。它们都返回相同的错误:

laptop$ g++ hello.cpp -o hello 
laptop$ valgrind ./hello
Killed: 9
laptop$ g++ hello2.cpp -o hello2
laptop$ valgrind ./hello2 
Killed: 9

我的hello2.cpp看起来像这样:

#include <stdio.h>
int main(void)
{
    printf("main.cn");
    return 0;
}

另一个hello world程序只是使用来自iostreamcout而不是printf()。需要注意的一件重要事情是,valgrind 在 Ubuntu 服务器 14.04 上按预期工作,这些失败的例子在我的运行 OSX 10.10 的新 Macbook Pro 上。我四处搜索,我找到的所有内容都与具有复杂内存问题的大型程序有关。

为什么我在 Mac 上收到此错误?

虽然在过去的OS X发布周期中,Valgrind

可能需要一段时间才能获得合理的功能支持,但由于最近的大量工作,Valgrind主干中已经提供了基本的OS X 10.10和OSX 10.11支持。

从邮件列表中:

最近有一些努力来改善瓦尔格林德对 约塞米蒂。如果您在 Mac OS 上开发,您可能想尝试 中继 (SVN Co svn://svn.valgrind.org/valgrind/trunk( 并报告任何 你得到的破损。对优胜美地的支持足够好,至少 一个大型图形应用程序(Firefox(运行正常。 支持 以前的版本10.9(Mavericks(也得到了实质性的改进。

请注意,这项工作仅针对 64 位进程。 32 位可能 工作,在小牛队可能会更好,但我怀疑它会是 由于瓦尔格林德的 32 位 x86,优胜美地的问题越来越多 指令集支持未通过 SSSE3。

朱利安·苏厄德

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

完全披露:我是新的Valgrind开发人员之一,他们为支持OS X 10.10和OS X 10.11贡献了补丁

看到这个答案。简短版本:

brew install --HEAD valgrind

使用包管理器(如 apt-get (在 OSX 10.10 上安装 valgrind 是不可靠的。使用以下链接从源代码下载和构建:

http://ranf.tl/2014/11/28/valgrind-on-mac-os-x-10-10-yosemite/