Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Отображение приведенного типа в окне Watch
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > Cредства разработки для МК > IAR
BSVi
Есть у меня класс для работы с числами с фиксированной запятой, называется fixed.
Хочется увидить в Watch приведенное к float значение числа с плавающей запятой для удобства отладки.

В самом класе есть функция для приведения к флоату
float toFloat() const { return s * F_STEP; }

попытка посмотреть в Watch имя_переменной.toFloat() приводик к ошибке - No Such Field.

Внимание вопрос - как посмотреть число с плавающей запятой в понятном для человека представлении?
dxp
Цитата(BSVi @ Jan 2 2010, 18:38) *
Есть у меня класс для работы с числами с фиксированной запятой, называется fixed.
Хочется увидить в Watch приведенное к float значение числа с плавающей запятой для удобства отладки.

Никак не получится просто так посмотреть. От операции приведения типа сам тип объекта не меняется - приведение типа просто есть директива компилятору трактовать данный объект в данном месте как объект указанного (приведенного) типа, но сам исходный объект какого типа был, такого типа и остался.

Цитата(BSVi @ Jan 2 2010, 18:38) *
В самом класе есть функция для приведения к флоату
float toFloat() const { return s * F_STEP; }

попытка посмотреть в Watch имя_переменной.toFloat() приводик к ошибке - No Such Field.

Естественно. Функция-член - это не объект (это запускаемый процесс), ее в виде возвращаемого результата нельзя наблюдать.


Цитата(BSVi @ Jan 2 2010, 18:38) *
Внимание вопрос - как посмотреть число с плавающей запятой в понятном для человека представлении?

Самое простое - завести отладочную переменную и ей присвоить результат преобразование в интересующей точке. Вот эту переменную можно в Watch смотреть. Еще более удобным на практике в таких случаях оказывается отладочная печать на консоль. Кстати, можете попробовать, по умолчанию IAR, насколько помню, как раз вывод printf гонит на консоль своего отладчика. Только со скоростью аккуратнее - там она весьма скромная должна быть.
BSVi
Цитата
Функция-член - это не объект (это запускаемый процесс), ее в виде возвращаемого результата нельзя наблюдать.

Но ведь можно наблюдать, к примеру, просто имя_переменной*F_STEP; темболее, при обьявлении сообщается компилятору, что метод не будет изменять объект, и поэтому его можно безопасно вызывать из отладчика.

Цитата
Самое простое - завести отладочную переменную и ей присвоить результат преобразование в интересующей точке.

Вот, это похоже самый лучший вариант, спасибо!

Цитата
Кстати, можете попробовать, по умолчанию IAR, насколько помню, как раз вывод printf гонит на консоль своего отладчика.

Попробовал, так оно и есть - printf выводит в Terminal I/O по умолчанию, может пригодится когданибуть, спасибо еще раз )
Скорости, естественно ожидать не приходится - сам printf - штука тяжеловесная, да еще и debugWire как интерфейс, но иногда может быть полезным.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.