使用callgrind / kcachegrind获取每线程统计信息

时间:2010-03-04 18:18:45

标签: multithreading valgrind kcachegrind callgrind

我希望能够看到我的应用程序中的每个线程使用callgrind“昂贵”。我使用--separate-thread=yes选项进行了分析,它为整个应用程序提供了一个callgrind文件,然后是每个线程一个。

这对于查看任何给定线程的配置文件很有用,但我真正想要的只是每个线程的CPU时间排序列表,因此我可以看到哪些线程是最大的线程。

2 个答案:

答案 0 :(得分:3)

Valgrind / Callgrind不允许这种行为。 kcachegrind都没有,但我认为这将是一个很好的改进。也许可以在他们的邮件列表中找到一些答案。

使用但非常无聊的方式可能是使用选项--separate-thread=no,并更新代码以用于每个线程不同的函数名称或类名。根据您的代码复杂性,它可能是答案(使用1computeData(),2computeData(),..)

答案 1 :(得分:-2)

只需在kcachegrind中同时打开多个配置文件。