Рассмотрим:
for (i = 0; i < 10; i++) {
src[i] = dest[i];
}
После оптимизации этот код может выглядеть следующим образом:
src[0] = dest[0];
src[1] = dest[1];
⋮
src[9] = dest[9];
Другими словами, i
больше нет.Отладчик ожидал, что i
будет находиться в кадре стека, но оптимизатор удалил его.
Кроме того, при шаге ПК будет перепрыгивать повсюду (очевидно, случайным образом), и вы столкнетесь с различными другими странностями, которые сделают отладку очень трудной или невозможной (в зависимости от того, что сделал оптимизатор).