У меня есть C++ исполняемый, когда я запустить этот бинарный файл с помощью следующей командыC++ двоичная отлично выполняет во время работы с Valgrind, но сбиваться при запуске только в этом бинарного
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
это ядро захоронения во многих местах (один после другого места).
Почему изменение beahavior меняется, когда я бежал с valgrind? Вставляет ли valgrind какие-либо внутренние переменные среды?
Что говорит valgrind log? – billz
С такой небольшой информацией мы можем догадываться. Моя, ваша программа демонстрирует неопределенное поведение и тот факт, что она работает, когда работает под «valgrind» - это просто случайность. – syam
Демпинговые ядра во многих местах указывают на то, что он либо многопоточен, либо использует fork, что означает, что при запуске valgrind будет отличаться время (что также может синхронизировать вещи в некотором роде, так как я уверен, что у него есть блокировки, чтобы предотвратить привязку сам в узлы). Посмотрите на условия гонки и проанализируйте свои ядро-дампы, чтобы попытаться понять, куда они идут. –