Макрос gcc при использовании -fprofile-generate
Gcc определяет какой-то макрос, когда флаг -fprofile-generate
указан? По сути, я хочу отключить многопоточность во время профилирования - похоже, есть способ повредить файлы.gcda.
1 ответ
Этот вопрос без ответа довольно старый, но у меня были подобные проблемы, поэтому я надеюсь, что это может быть полезно для кого-то.
Вы должны попробовать включить -fprofile-correction
Флаг компилятора GCC при использовании информации профиля, сгенерированной многопоточным приложением. Согласно документации GCC относительно этого флага:
Профили, собранные с использованием инструментированного двоичного файла для многопоточных программ, могут быть противоречивыми из-за пропущенных обновлений счетчика. Когда указана эта опция, GCC использует эвристику для исправления или сглаживания таких несоответствий. По умолчанию GCC выдает сообщение об ошибке при обнаружении несогласованного профиля.
Это избавит от ошибок, указывающих, что файлы.gcda повреждены из-за исправления несогласованных значений профиля из-за многопоточности.