Valgrind在FreeBSD上

美好的一天!

我正在玩一个C项目.它位于FreeBSD机器上(它看起来像Raspberry PI2,不确定)

enter image description here

问题是我想在Valgrind中运行项目来查找内存泄漏.当我尝试通过端口安装Valgrind时,我得到下一个错误:

root@raspberry-2-55:/usr/ports/devel/valgrind # make
===>  valgrind-3.10.1.20160113,1 is only for i386 amd64, while you are running
armv6.
*** Error code 1

Stop.
make: stopped in /usr/ports/devel/valgrind

请帮助在这个平台上运行valgrind.

最佳答案
不支持ARM6 / FreeBSD组合.

valgrind团队doesn’t support FreeBSD at all以及维护FreeBSD port的人将其限制在i386和AMD64,因为这些是当前的Tier 1体系结构.

据猜测,直到ARM成为第1层平台或直到某人前进进行移植为止,才会实现对ARM的valgrind支持.

另见Valgrind团队关于移植的声明:

Maintaining each port takes a lot of effort, more so than for most other programs. Valgrind is fragile due to the low-level nature of what it does. Also, each platform port has CPU-specific code, OS-specific code and platform-specific code, and testing all the combinations is difficult.

更新:

在FreeBSD上,你可以使用非常强大的dtrace工具进行性能监控和调试.但它确实有一个陡峭的学习曲线.

我最喜欢的调试工具仍然将printf()置于战略位置.假设您怀疑程序在大量代码中崩溃.将printf放在中间,重新编译并重新运行.如果看到输出,则错误发生在printf之后.如果你不这样,那就是printf之前.您现在已将包含错误的块的大小减半.现在在剩余的可疑代码中间添加另一个printf并重复.这种技术称为二分法.您还可以使用它来监视变量的值.

我建议将调试printf包装在宏([1],[2])中,这样您就可以将它们保留在代码中,但是您可以为发布版本禁用它们.

转载注明原文:Valgrind在FreeBSD上 - 代码日志