Цитата(haker_fox @ Jul 3 2018, 13:16)

Банально, по причине изменившихся времён выполнения кода. Понимаю, что некорректное программирование. Но вот и надо отладить эти моменты. А по-этому и вижу целесообразность отлаживать сразу с оптимизацией. В общем хочется внешнего опыта по этому вопросу)
Банально, но это обыкновенное "заметание проблемы под ковёр" как тут кто-то сказал.
Вместо того, чтобы это своё "некорректное программирование" найти и исправить, Вы пытаетесь придумать костыль чтобы проблема не проявлялась. В медицине это ещё называют: "Борьба с симптомами вместо лечения причины".
Нормально всё отлаживаются без оптимизации. После чего включают оптимизацию и просто проверяют, что программа не перестала функционировать. Отлаживать тут особо не надо. Ну если только в крайнем случае - посмотреть пару переменных в паре точек останова, но это можно и по асм-коду разобраться.
Корректно написанная программа работает одинаково как с оптимизацией так и без. Ну разве что за исключением случаев, когда ресурса быстродействия - впритык.
Цитата(Arlleex @ Jul 3 2018, 13:17)

Оптимизатор не исправляет ошибки пользователя - он лишь жестче показывает программисту, где он не прав, на мой взгляд

В точку!

Цитата(Arlleex @ Jul 3 2018, 13:17)

Ну а для устройств, которые должны отлаживаться далеко за пределами моего рабочего стола - я веду систему логгирования всего и вся на внутренний накопитель и при возникновении проблем - требую .log файл сессии, где уже с ним в поте лица сижу и думаю "шо цэ такое было".
Тоже часто так делаю. Для сложных проектов.
Ну и прочие комплексные сложные методы отладки.
Например: Когда отлаживал своё графическое API и юзер-интерфейс на его основе, то сделал эмуляцию работы LCD на компе (через USB-канал (уже использовался в устройстве) периодически передавал содержимое видеобуфера на комп и там рисовал его в проге на VS). А положение мышки на компе - через этот же USB на устройство. Так отладка графического API значительно упростилась и ускорилась.
Когда делали сложные устройства, длительное время работающие без выкл. питания и вдали от удобных мест отладки, то делали логгирование всяких критических событий (с полной инфой о них) в журналы во FRAM. С вытягиваением потом их по рабочему протоколу.
Сейчас вот пишу осциллографирование - тоже для отладки, наблюдение за множеством переменных в сложной программе в runtime.
Так что метода отладки сильно зависят от задачи.
А то что обязательно всегда есть по дефолту: JTAG/SWD и отладочный вывод в UART.