用于在Linux中跟踪和可视化pthread行为的工具

时间:2011-05-25 09:18:48

标签: linux debugging pthreads trace

我渴望找到一个工具,允许我在我正在处理的程序中跟踪pthread的行为。我知道之前有过类似问题,请参阅herehere

事实证明,推荐的工具不是我需要的,或者似乎无法让他们在我的机器上工作。它是Debian 6,32位全部在x86架构上。

EZtraceViTE结合使用似乎就是我要找的。但不幸的是,我无法让它发挥作用。 (工具不会在某些版本中编译,其他版本崩溃,从未真正看到它工作。不同的计算机(Ubuntu 10.04 x64)显示其他错误)

是否有一个跟踪解决方案能够可视化Linux上的pthreaded程序的行为,实际上已知有效?

3 个答案:

答案 0 :(得分:2)

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缓存进行详细模拟,因此可以准确地找出代码中缓存未命中的来源......

  • Josef Weidendorfer的Callgrind是Cachegrind的扩展。它提供了Cachegrind所做的所有信息,以及有关调用图的额外信息。它被折叠到版本3.2.0中的主要Valgrind发行版中。另外还有一个令人惊叹的可视化工具 KCachegrind ,它可以更好地概述Callgrind收集的数据;它也可以用于可视化Cachegrind的输出。

  • Massif是一个堆分析器。它通过获取程序堆的常规快照来执行详细的堆分析。它生成一个显示堆使用情况的图表,包括有关程序的哪些部分负责大部分内存分配的信息......

  • Helgrind是一个线程调试器,可在多线程程序中查找数据争用。它查找由多个(POSIX p-)线程访问的内存位置,但是没有找到一致的(pthread_mutex_)锁。这些位置表示线程之间缺少同步,并且可能导致难以发现的与时序相关的问题。它对任何使用pthread的程序都很有用。这是一个有点实验性的工具,所以特别欢迎您的反馈。

答案 1 :(得分:1)

检查这个

http://lttng.org/(Linux Trace Toolkit)

HTH

答案 2 :(得分:0)

DIVINE 可以绘制状态空间图并检查违反的断言。