Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: из-за чего не встает breack point в switch -case ?
Форум разработчиков электроники ELECTRONIX.ru > Сайт и форум > В помощь начинающему > ARM, 32bit
Метценгерштейн
http://c2n.me/3g0Fl2O
там где стрелочка, не хочет ставится бряка. Хотя эта ф-я возвращает в реальности корректное значение.
aaarrr
Из-за высокого уровня оптимизации, например.
Метценгерштейн
нулевой стоял уровень оптимизации.
Синтаксис корректный же?
aaarrr
На вид все корректно.
Метценгерштейн
может такие глюки отладчика кейла?
A. Fig Lee
Да много ииза чего. Например количесво брекпойнтов закончилось, надо гдето удалить брекпойнт, чтоб можно было еще добавить.
Не понятно ни что за компайлер, ни что за микроконтроллер.
Потому и не работает, что даже вопрос не задан в полной мере.
Метценгерштейн
брэкпоинт один.
компилятор- keil
МК- Nordic

только такие глюки никак не связаны с типом МК.
Harvester
Посмотрите на дизассемблер. Как вариант: нет прямого соответствия исходного и машинного кода, поскольку компилятор в этом месте просто прыгает на финальный возврат
aaarrr
Цитата(Метценгерштейн @ Apr 13 2015, 15:02) *
только такие глюки никак не связаны с типом МК.

Это не глюк, а особенность работы оптимизатора. Скорее всего, "return i" в результате оптимизации совмещен с "return -1", т.е. физически отсутствует в коде как отдельный оператор. Странно только, что это наблюдается на нулевом уровне.
Если хотите получить возможность поставить точку останова на этом месте, добавьте какой-нибудь не подлежащий оптимизации оператор перед return:
Код
__nop();
return [i];
Метценгерштейн

нет, не помогло.
Самое интересное, что корректно возвращает i- я его получаю дальше по коду
aaarrr
Цитата(Метценгерштейн @ Apr 13 2015, 15:27) *
нет, не помогло.

На __nop() не устанавливается?
Метценгерштейн
на noop ставится. Я думал, что на return надо.
А что нам noop дает?
aaarrr
Цитата(Метценгерштейн @ Apr 13 2015, 15:31) *
А что нам noop дает?

Возможность установить breakpoint, что же еще?
Метценгерштейн
да, точно. Установка перед return. Только что проверил- пошаговая отладка встает на
__nop();
затем перепрыгивает return и тд.
но значение дальше по коду принимается.
ViKo
Наверное, i сразу загружается в R0, и при выходе никакой дополнительной команды не требуется.
toweroff
Скорее всего, в i изначально заносится -1, а по ходу цикла модифицируется значением переменной
В результате выход из функции только один. Вы же не приводите ассемблерный листинг
Метценгерштейн
http://c2n.me/3g35tSb
и следующий шаг (F11)
http://c2n.me/3g35AiB
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.