![](https://csdnimg.cn/release/download_crawler_static/32934879/bg6.jpg)
==31522== malloc/free: 2 allocs, 2 frees, 84 bytes allocated.
==31522== For counts of detected errors, rerun with: -v
==31522== No malloc'd blocks -- no leaks are possible.
在 test3.c 的第 9 行发现一个非法的 4 字节写操作, 在第 12 行发现一个非法的 4 字节
读操作。
Valgrind 也可以帮助判断内存误用的问题,例如:
读/ 写已经释放的内存
C++ 环境中错误地使用 malloc/new 与 free/delete 的配对
下面这个列表介绍了 POWER 架构上 Valgrind 的状态:
memcheck 和 addrcheck 工具都可以很好地工作。然而,其他工具还没有进行大量
的测试。另外, Helgrind (一个数据竞争的检测程序)在 POWER 上尚不能使用。
所有的 32 位 PowerPC? 用户模式的指令都可以支持,除了两条非常少用的指令:
lswx 和 stswx 。具体来说,所有的浮点和 Altivec (VMX)指令都可以支持。
Valgrind 可以在 32 位或 64 位 PowerPC/Linux 内核上工作,但是只能用于 32
位的可执行程序。
有关 Valgrind 内存调试的更多信息,请访问 Valgrind HOW TO 站点。还可以参阅 Steve
Best 的“Debugging Memory Problems”( Linux Magazine,2003 年 5 月)。 参考资料 中
有它们的链接
除了 Valgrind 之外,还可以使用其他几个内存调试工具;例如, Memwatch 和 Electric
Fence。
回页首
调试其他程序问题的工具和技术
除了内存 bug 之外,开发人员通常还会碰到程序虽然能够成功编译,但是在运行时却会产
生内核转储或段错误的问题。有时在程序完成之后,程序的输出可能与所期望或设计的不
同。在这两种情况中, 可能代码中存在您认为正确而实际上错误的情况。 接下来的几节中介
绍的调试器将帮助您找到这些情况的原因。
GNU 项目调试器
GDB(GNU 项目调试器) 可以让您了解程序在执行时“内部” 究竟在干些什么, 以及在程序
发生崩溃的瞬间正在做什么。
GDB 做以下 4 件主要的事情来帮助您捕获程序中的 bug :