Как в проекте AVR Studio + gcc добиться нормальной отладки
Написал microsin   
10.01.2010

При отладке в AVR Studio иногда невозможно нормально производить пошаговую отладку и просматривать (Watch) значения локальных переменных. Это происходит из-за того, что включена оптимизация кода.

Для того, чтобы исправить положение, нужно эту оптимизацию отключить. Для компилятора avr-gcc.exe (находится в папке c:\WinAVR-20080610\bin\) оптимизация задается опцией -O (с добавками, которые управляют типом оптимизации). У меня, например, была включена опция -Os, что задавало оптимизацию по скорости. Если убрать совсем опцию -O, то оптимизация отключается, что позволит нормально просматривать значения переменных и делать качественную отладку. Но имейте в виду, что объем кода при этом возрастает почти в 2 (!) раза.

Меняются опции компилятора либо через настройки проекта (меню Project -> Configuration Options -> Custom Options), либо в тексте Makefile (если, например, в свойствах проекта стоит галочка "Use External Makefile"). В случае Makefile оптимизация выключается, например, так:

#Строка опций для компилирования с оптимизацией:
CFLAGS += -Wall -gdwarf-2 -DF_CPU=16000000UL -Os -fsigned-char

#Строка опций для компилирования без оптимизации
# (тут всего лишь убрана опция -Os):
CFLAGS += -Wall -gdwarf-2 -DF_CPU=16000000UL -fsigned-char

Для некоторых файлов, которые не нужно отлаживать пошагово, можно оптимизацию задать отдельно (в секции компиляции модулей Makefile):

timer.o: ../timer.c
    $(CC) $(INCLUDES) -Os $(CFLAGS) -c  $<