Valgrind’s Tool Suite [Linux和OS / X]
我使用的是Memcheck,它的作用是广告。我还没有使用可视化工具。不知道Helgrind的输出是否可以通过kCachegrind进行查看。
Valgrind分发包括四个有用的调试和分析工具:
> Memcheck检测内存管理问题,主要针对C和C程序。当一个程序在Memcheck的监督下运行时,会检查所有的内存读写操作,并且拦截对malloc / new / free / delete的调用。因此,Memcheck可以检测您的程序:
访问内存不应该…
以危险的方式使用未初始化的值。
泄漏记忆
堆块坏掉(双重释放,不匹配释放)。
将源和目标内存块重叠传递给memcpy()和相关函数。
Memcheck会在发生错误时立即报告这些错误,提供发生错误的源代码行号…
Cachegrind是一个缓存分析器。它可以对您的CPU中的I1,D1和L2高速缓存进行详细的仿真,因此可以准确地定位代码中的高速缓存未命中源。
> Callgrind,由Josef Weidendorfer提供,是Cachegrind的扩展。它提供了Cachegrind所做的所有信息,以及关于callgraphs的额外信息。它被折叠成版本3.2.0中的主要的Valgrind分发版。另外提供了一个惊人的可视化工具KCachegrind,它可以更好地概述Callgrind收集的数据;它也可以用来可视化Cachegrind的输出。
Massif是一个堆分析器。它通过定期获取程序堆的快照来执行详细的堆分析。它生成一个显示堆使用率随时间变化的图形,包括程序的哪些部分负责最多内存分配的信息…
> Helgrind是一个在多线程程序中查找数据竞争的线程调试器。它查找由多个(POSIX p-)线程访问的内存位置,但是找不到一致使用的(pthread_mutex_)锁。这些位置指示线程之间丢失同步,并且可能导致难以找到与时序相关的问题。对于使用pthread的任何程序都是有用的。这是一个有点实验的工具,所以您的反馈在这里特别受欢迎。