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

C++ binary is perfectly executing while running with valgrind but failing when run this binary alone

本文关键字:二进制文件 单独 运行 失败 valgrind 运行时 C++ 执行      更新时间:2023-10-16

当我用以下命令运行这个二进制文件时,我有一个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是否设置了任何内部环境变量?

正如Valgrind手册所说,

Valgrind将执行串行化,以便一次只运行一个(内核)线程。[…]当你的程序在Valgrind上运行时,它将看到与正常运行时截然不同的调度。这既是因为Valgrind正在串行化线程,也是因为代码运行速度比正常情况慢得多。

此外,您正在运行默认的Valgrind工具memcheck。您可以尝试使用任何一种以线程为中心的工具,如helgrind或DRD,以获得有关并发问题的特定信息。