Когда вы компилируете, используя флаг оптимизации, вы уверены, что выходные данные программы будут соответствовать написанному вами коду, но сам код будет отличаться от того, который вы на самом деле скомпилировали.
Как вы указаликод будет переупорядочен, и некоторые вызовы будут выполняться по-другому.Также другой оптимизацией могут быть развертывание цикла, предсказание перехода и упрощение вызовов функций.Эти оптимизации также будут различаться в зависимости от архитектуры, на которой вы работаете.
По всем этим (и другим) причинам ваш код может стать очень сложным для отладки, поскольку для вас совершенно очевидно, что именно делает компилятор, что означаетчто код, который вы хотите отлаживать, может отличаться от того, который вы написали.