Главная arrow Программирование arrow AVR arrow Как в проекте AVR Studio + gcc добиться нормальной отладки Monday, August 21 2017  
ГлавнаяКонтактыАдминистрированиеПрограммированиеСсылки
UK-flag-ico.png English Version
GERMAN-flag-ico.png Die deutsche Version
map.gif карта сайта
нашли опечатку?

Пожалуйста, сообщите об этом - просто выделите ошибочное слово или фразу и нажмите Shift Enter.

Поделиться:

Как в проекте 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  $<

 

 

Комментарии  

  1. #1 Мааковеюшко
    2010-07-0708:28:09 Имеет ли это смысл? Ведь мы будем отлаживать не тот код который будем эксплуатировать .

    Или вы предлагаете так и не включать оптимизацию после отладки для компиляции релиза?

    microsin: имеет ли смысл отключать оптимизацию - решает в каждом конкретном случае программист исходя из условий решения задачи. Кто-то отлаживает на коленке (прошил-записал-не заработало), тому оптимизацию незачем выключать, а кто-то отладчиком - тому лучше отлаживать без глюков. Если у Вас памяти в программируемом чипе хватает, и достаточно быстродействия, то оптимизацию можно вообще не использовать. Я ничего не предлагаю, в статье я только рассказал о проблеме и о её решении, а "лечиться или не лечиться" - это только от Вас зависит.

Добавить комментарий

:D:lol::-);-)8):-|:-*:oops::sad::cry::o:-?:-x:eek::zzz:P:roll::sigh:

Защитный код
Обновить

< Пред.   След. >

Top of Page
 
microsin © 2017