Valgrind 错误 - 无法执行二进制文件
Posted
技术标签:
【中文标题】Valgrind 错误 - 无法执行二进制文件【英文标题】:Valgrind error - cannot execute binary file 【发布时间】:2011-06-17 12:25:28 【问题描述】:由于某种原因,我无法使 valgrind 与 OS X 10.6 上的 Cocoa 应用程序一起工作,该应用程序是用 Apple GCC 编译的4.2.1... 谷歌搜索此错误后,我发现 valgrind 不适用于 64 位可执行文件,但是我的应用程序和它使用的所有框架正在编译-m32 标志和 file 命令说 ./MyAppName: Mach-O executable i386, Kernel 也是 >i386.
谁能告诉我为什么 valgrind 不能工作?
顺便说一句,我从 MacPorts 获得了 valgrind...
【问题讨论】:
【参考方案1】:请注意,我遇到了同样的问题,但使用+universal
端口选项重新安装,如
sudo port install valgrind +universal
让 MacPorts 版本适合我。
【讨论】:
【参考方案2】:我正在使用 Homebrew 构建的 valgrind,它对我有用。下载 valgrind 后,它会应用一些补丁,afaik 讨论过的那个 here。此外,它在 64 位 darwin 上编译时使用标志 --enable-only64bit --build=amd64-darwin
。
对我来说,macports 构建也没有工作,我从 valgrind 页面的 vanilla tar.gz 文件创建自己的构建也没有工作。提供的 autoconf 脚本似乎不支持在 64 位模式下运行的较新的 mac。
【讨论】:
谢谢你的回答,巴巴兹!但是,安装 Homebrew build valgrind 后仍然无法正常工作......我应该指定一些额外的标志,而不仅仅是 brew install valgrind? brew install valgrind 应该可以正常工作。你可以执行valgrind吗?像 valgrind --help 例如?这已经导致我使用 macports + vanilla 版本出现段错误。 我在运行 MacPorts 或 Homebrew valgrind --help 时没有问题...而且我在安装 Homebrew 版本之前卸载了 MacPorts 版本。 那么您遇到了另一个问题。您能否更具体地说明“无法使 valgrind 工作”? Valgrind 自己工作,但是当我尝试分析运行 valgrind ./MyAppName 的应用程序时,它总是报告错误“./MyAppName:无法执行二进制文件”。如果我尝试执行./MyAppName.app,错误将是相同的,只是路径会不同......【参考方案3】:我从 valgrind.org 下载了最新的 valgrind v3.6.1 并在 OS X 下编译它,它没有任何问题。
【讨论】:
以上是关于Valgrind 错误 - 无法执行二进制文件的主要内容,如果未能解决你的问题,请参考以下文章