Valgrind在FreeBSD上

Geo*_*aál 3 valgrind freebsd raspberry-pi2

美好的一天!

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

在此输入图像描述

问题是我想在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
Run Code Online (Sandbox Code Playgroud)

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

Rol*_*ith 6

不支持ARM6/FreeBSD组合.

valgrind团队根本不支持FreeBSD,维护FreeBSD端口的人将其限制为i386和AMD64,因为这些是当前的第1层架构.

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

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

维护每个端口需要付出很多努力,比大多数其他程序要多.Valgrind很脆弱,因为它的作用很低级.此外,每个平台端口都有特定于CPU的代码,特定于操作系统的代码和特定于平台的代码,并且难以测试所有组合.

更新:

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

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

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