По определению работа в отладчике отличается от работы в автономном режиме. Отладчики могут и действительно скрывают многие ошибки. Если вы компилируете для отладки, вы можете добавить изрядное количество кода, аналогично компиляции совершенно неоптимизированной (например, позволяя вам выполнять пошаговые действия или наблюдать за переменными). В то время как компиляция для релиза может удалить опции отладки и удалить нужный код, существует множество ловушек оптимизации, в которые вы можете попасть. Из вашего поста я не знаю, кто контролирует параметры компиляции или что они собой представляют.
Если вы не планируете поставлять продукт для запуска под отладчиком, вам следует проводить тестирование в автономном режиме. В идеале, делать свою разработку без отладчика, избавляет вас от необходимости делать все дважды.
Звучит как ошибка в вашем коде, медленно перечитывайте ваш код, используя новые взгляды, как если бы вы объясняли это кому-то или, возможно, фактически объясняли это кому-то построчно. Там может быть что-то, что вы не можете видеть, потому что вы смотрели на это одинаково слишком долго. Удивительно, сколько раз и насколько хорошо это работает.
Я также мог быть ошибкой компилятора. Такие вещи, как распечатка возвращаемого значения или нет, могут привести к тому, что компилятор сгенерирует другой код. Добавление другой переменной и сохранение результата в этой переменной может заставить компилятор сделать что-то другое. Попробуйте изменить параметры компилятора, уменьшить или удалить любые параметры оптимизации, уменьшить или удалить параметры компилятора отладчика и т. Д.
Это проверенная система или вы разрабатываете новое оборудование? Попробуйте запустить, например, без включенного кэша. Работая в отладчике, а не в автономном режиме, если не ошибка компилятора, то это может быть проблемой синхронизации, одношаговое изменение очищает линию, смешивает кэш по-разному, дает системе кеша и памяти вечность, чтобы получить результат, которого у него нет в режиме реального времени.
Короче говоря, существует очень длинный список причин, по которым работа под отладчиком скрывает ошибки, которые вы не можете найти, пока не протестируете в окончательной среде, подобной конечному результату. Я затронул лишь несколько из них. Работать в отладчике, а не в автономном режиме, не является неожиданностью, это просто то, как работают инструменты. Вероятно, это ваш код, аппаратное обеспечение или ваши инструменты, основанные на описании, которое вы дали.
Самый быстрый способ устранить это, используя ваш код или инструменты, - это разобрать раздел и проверить, как обрабатываются переданные и возвращаемые значения. Если возвращаемое значение оптимизировано, есть ваш ответ.
Вы компилируете для общей библиотеки C или статической? Возможно скомпилировать для статики ...