Когда компилятор оптимизирует код, какова область оптимизации? Может оптимизация
а) охватывать больше, чем набор вложенных скобок?
б) охватывают больше, чем функция?
в) охватывать больше, чем файл?
Мы преследуем неясную ошибку, которая, кажется, происходит от оптимизации. Сбой кода в режиме выпуска, но не в режиме отладки. И, конечно, мы знаем, что это может быть повреждение кучи или другие проблемы с памятью, которые преследовали это уже некоторое время. Один из вариантов, который мы рассматриваем, заключается в выборочной компиляции наших файлов в режиме отладки, пока проблема не исчезнет. Другими словами:
a) Начните со всех файлов, скомпилированных в режиме выпуска
б) скомпилировать 1/2 файла в режиме отладки
если сбой все еще замечен, возьмите половину скомпилированных файлов релиза и скомпилируйте в режиме отладки
если сбоя не видно, говорите половину файлов, скомпилированных в режиме отладки, и скомпилируйте в режиме выпуска
повторять, пока мы не сузим подозрительные файлы
это двоичный поиск, чтобы сузить проблемные файлы
Мы понимаем, что если это проблема с памятью, простое выполнение этой смешанной компиляции может убрать ошибку, но мы извиняемся, если сможем сузить проблемные файлы.
Однако остается нерешенным вопрос: какова область оптимизации? Могут ли они охватывать более одного файла?