Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Неверные значения переменных в иар
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > Cредства разработки для МК > IAR
Vladimir Prokofiev
процессор STM32F215
IAR 6.21

В некоторых функциях, когда останавливаешься отладчиком, показывает странные числа вместо настоящих, которые там, на самом деле, правильные. Происходит не со всеми переменными, и не во всех функциях. Было даже так:

CODE
//В функцию пришло TGPSPoint par
//typedef struct tag_GPSPoint{
// double la, lo;
//} TGPSPoint;
TGPSPoint p;
double tmp;
//par.la и par.lo адекватные, 60 и 30
p.la = par.la;
p.lo = par.lo;
//p.la и p.lo показывает -217 степень, явный бред
tmp = p.la;
//tmp тоже правильный, 60!!


В чем причина?
Непомнящий Евгений
Оптимизация скорее всего.
Отладчик иногда сбивается на локальных переменных.

выход:
а) локально отключить оптимизацию
б) сохранять во вспомогательные переменные (объявленные как volatile)
в) смотреть асм, определять где физически лежит переменная (память\регистр) и смотреть ее содержимое
Vladimir Prokofiev
Цитата(Непомнящий Евгений @ Jun 5 2012, 20:12) *
а) локально отключить оптимизацию
б) сохранять во вспомогательные переменные (объявленные как volatile)
в) смотреть асм, определять где физически лежит переменная (память\регистр) и смотреть ее содержимое

Оптимизация выключена вся в настройках проекта.
Да, помогает создать глобальную переменную и в нее скопировать значение чтобы посмотреть, спасибо! Но блиин криво так sad.gif
Непомнящий Евгений
Цитата(Vladimir Prokofiev @ Jun 5 2012, 20:25) *
Оптимизация выключена вся в настройках проекта.


Тогда странно. У меня при отключенной оптимизации все хорошо становилось... Значит не совсем мой случай.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.