C ++二进制文件在使用valgrind运行时完美执行但在单独运行此二进制文件时失败

时间:2013-07-04 10:53:57

标签: c++ valgrind

当我使用以下命令

运行此二进制文件时,我有一个C ++可执行文件
valgrind -v --leak-check=full --show-reachable=yes --track-origins=yes mybinary -mode init > 5.log 2>&1

它以0退出,并生成所有输出文件。

但是当我像

那样运行这个二进制文件时
mybinary -mode init > 5.log 2>&1

它是许多地方的核心倾销(一个又一个地方)。

当我和valgrind一起跑步时,为什么行为会发生变化? valgrind是否设置了任何内部环境变量?

1 个答案:

答案 0 :(得分:1)

正如Valgrind手册says

  

Valgrind序列化执行,以便一次只运行一个(内核)线程。 [...]你的程序在Valgrind上运行时会看到与正常运行时不同的调度。这是因为Valgrind正在对线程进行序列化,并且因为代码运行速度比正常情况慢得多。

此外,您正在运行默认的Valgrind工具memcheck。您可以尝试使用任何特定于线程的工具(如helgrind或DRD)来获取有关并发问题的特定信息。