当我使用以下命令
运行此二进制文件时,我有一个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是否设置了任何内部环境变量?答案 0 :(得分:1)
正如Valgrind手册says,
Valgrind序列化执行,以便一次只运行一个(内核)线程。 [...]你的程序在Valgrind上运行时会看到与正常运行时不同的调度。这是因为Valgrind正在对线程进行序列化,并且因为代码运行速度比正常情况慢得多。
此外,您正在运行默认的Valgrind工具memcheck。您可以尝试使用任何特定于线程的工具(如helgrind或DRD)来获取有关并发问题的特定信息。