0

我需要在需要很长时间才能完成的并行代码中使用 massif 工具运行 valgrind。我想定期拍摄快照。

我执行以下操作:

valgrind --tool=massif --massif-out-file=outFile.txt --vgdb=yes ./app

在另一个终端中,我运行以下循环:

vgdb all_snapshot snapshots.txt

然而,“snapshots.txt”始终具有相同的内容。我尝试了不同的 valgrind 选项,例如 --time-unit=ms 和 --time-unit=i。而且,如果我在执行时刻 X 和时刻 X+Y 获得所有快照,则两个生成的文件是相同的。

我究竟做错了什么?

4

1 回答 1

1

massif 具有在内存中存储一​​组快照的逻辑。快照的数量和拍摄时间由各种选项控制,例如 --peak-inaccuracy、--max-snapshots、...

根据您的应用程序在两个时刻之间的行为,可能会或可能不会记录新的快照。

监控命令“all_snapshots”只是保存当前在内存中的快照。

如果要强制输出新快照,请使用监控命令“快照”或“详细快照”。

于 2021-03-12T09:50:02.917 回答