Перейти к содержанию
    

Оптимизация в AtmelStudio.

Добрый вечер! Есть ли в AtmelStudio директива, позволяющая запретить оптимизацию отдельных участков кода, а не всего проекта?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

AS использует GCC, нужно на него доки читать. https://gcc.gnu.org/onlinedocs/gcc/Function...on-Pragmas.html

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Добрый вечер! Есть ли в AtmelStudio директива, позволяющая запретить оптимизацию отдельных участков кода, а не всего проекта?
вынесите код "без-оптимизации" в отдельный модуль (в виде функций), и в этом модуле запретите оптимизацию. (#pragma)

 

 

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Добрый день. В Microchip Studio (Atmel Studio) отлаживал программу, как рекомендуют, при нулевой оптимизации, и всё работало как мне нужно. При компиляции окончательного варианта включил оптимизацию и программа стала зависать. Как выяснить причину, если режим отладки уже не возможен?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Лог присходящено в компорт?

Проверить совместное использование переменных, модифицируемых в прерывании и вне его?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

48 минут назад, GenaSPB сказал:

Лог присходящено в компорт?

Проверить совместное использование переменных, модифицируемых в прерывании и вне его?

Лог использовать не знаю как... А вот с прерываниями имеются сомнения, три различных модуля осуществляют запуск функции с прерыванием, которая находится в другом модуле. Может быть эту функцию нужно размещать в каждом модуле, в котором она используется?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Лог = это вывести в компорт текстовую строку с номером строки например 

Проверить совместное использование переменных, модифицируемых в прерывании - при чем здесь то что вы предложили?
Исходник проекта бы показали...

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

1 час назад, GenaSPB сказал:

Исходник проекта бы показали...

Исходник слишком велик (два с лишним Мб), к тому же я не профессионал в программировании и показывать свою "самоделку" не очень удобно... Поэтому спасибо, извиняюсь за беспокойство. Попробую разобраться самостоятельно.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

2 часа назад, Smoky сказал:

Как выяснить причину, если режим отладки уже не возможен?

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

3 часа назад, Smoky сказал:

Как выяснить причину, если режим отладки уже не возможен?

Начинать отладку с самого начала. Ибо "отлаживал только при нулевой оптимизации" это значит - "вообще не отлаживал".  :unknw:

15 минут назад, Сергей Борщ сказал:

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

Кроме того, если трудно найти привязку каких-то си-строк с оптимизированным ассемблерным кодом, можно в интересующие места вставлять тестовые инструкции. Например - чтение volatile переменной. Или какую-нить volatile intrinsic-функцию в одну асм-команду. На эту строчку ставить бряк и танцевать уже от него.

15 минут назад, Сергей Борщ сказал:

А отлаживаться без оптимизации я считаю бесполезным занятием

:good2::good2::good2:

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

3 часа назад, Smoky сказал:

При компиляции окончательного варианта включил оптимизацию и программа стала зависать. Как выяснить причину, если режим отладки уже не возможен?

А какой контроллер вы используете и какой отладчик?

Потому что это на старых Микрочиповских ПИКах была проблема с отладкой, т.к. модуль отладки в ПИКах был полу-аппаратным, полу-программным.
Нужно было устанавливать конфиг.бит и при этом отладчик грузил свой код во флеш и занимал уровень прерывания и щепотку ОЗУ.
Но даже это никак не было связано с уровнем оптимизации.

А на Атмеловских АТмегах уже начиная с меги16 был полноценный JTAG. Бери копеечный AVR Dragon и отлаживайся сколько хочешь в любом режиме.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

32 минуты назад, Сергей Борщ сказал:

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

Читал в какой то умной книге что отладку нужно производить только только при нулевой оптимизации. С ассемблером не "дружу", потому окно дизассемблера для меня "тёмный лес". Однако спасибо всем за совет, что можно отлаживать и оптимизированный код. 

29 минут назад, jcxz сказал:

Начинать отладку с самого начала. Ибо "отлаживал только при нулевой оптимизации" это значит - "вообще не отлаживал".  :unknw:

Кроме того, если трудно найти привязку каких-то си-строк с оптимизированным ассемблерным кодом, можно в интересующие места вставлять тестовые инструкции. Например - чтение volatile переменной. Или какую-нить volatile intrinsic-функцию в одну асм-команду. На эту строчку ставить бряк и танцевать уже от него.

:good2::good2::good2:

Спасибо, буду смотреть.

19 минут назад, Baser сказал:

Бери копеечный AVR Dragon и отлаживайся сколько хочешь в любом режиме.

Я его и использую.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

7 минут назад, Smoky сказал:

Читал в какой то умной книге что отладку нужно производить только только при нулевой оптимизации.

Значит это была глупая книга. Или вы неправильно её поняли.  :unknw:

Отлаживать нужно при разных оптимизациях. Чем больше встряхивать программу (разными ключами), тем больше оттуда выпадает блох багов. А у вас они все остались... скрытые.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

17 минут назад, Smoky сказал:

Читал в какой то умной книге что отладку нужно производить только только при нулевой оптимизации.

Обычно отлаживаются на том уровне оптимизации, на которой будет "боевая" прошивка. Уровень снижают при выявлении "сильно непонятных" багов. Так проще шагать по высокоуровневому коду. Но если при этом баг пропадает, значит что-то с идеологией программы сильно не так.
А книга могла быть для начинающих. Для них, да, лучше оптимизацию не включать, пока опыта мало.

17 минут назад, Smoky сказал:

Я его и использую.

Тогда поясните, почему вы считаете, что "режим отладки уже не возможен". А то у меня только одна идея, почему: вы включили защиту от чтения/записи. Так не включайте её :smile:

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

19 минут назад, Baser сказал:

Обычно отлаживаются на том уровне оптимизации, на которой будет "боевая" прошивка. Уровень снижают при выявлении "сильно непонятных" багов. Так проще шагать по высокоуровневому коду. Но если при этом баг пропадает, значит что-то с идеологией программы сильно не так.
А книга могла быть для начинающих. Для них, да, лучше оптимизацию не включать, пока опыта мало.

Тогда поясните, почему вы считаете, что "режим отладки уже не возможен". А то у меня только одна идея, почему: вы включили защиту от чтения/записи. Так не включайте её :smile:

Книга действительно была для начинающих, где утверждали не целесообразность оптимизации при отладке, отсюда было моё утверждение "режим отладки уже не возможен". Спасибо что рассеяли мои заблуждения.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...