реклама на сайте
подробности

 
 
 
Reply to this topicStart new topic
BSVi
сообщение Jan 2 2010, 12:38
Сообщение #1


Частый гость
**

Группа: Свой
Сообщений: 76
Регистрация: 18-12-07
Из: Киев
Пользователь №: 33 391



Есть у меня класс для работы с числами с фиксированной запятой, называется fixed.
Хочется увидить в Watch приведенное к float значение числа с плавающей запятой для удобства отладки.

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

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

Внимание вопрос - как посмотреть число с плавающей запятой в понятном для человека представлении?


--------------------
http://bsvi.ru/ - блог эмбеддера
Go to the top of the page
 
+Quote Post
dxp
сообщение Jan 3 2010, 06:19
Сообщение #2


Adept
******

Группа: Свой
Сообщений: 3 469
Регистрация: 6-12-04
Из: Novosibirsk
Пользователь №: 1 343



Цитата(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 гонит на консоль своего отладчика. Только со скоростью аккуратнее - там она весьма скромная должна быть.


--------------------
«Отыщи всему начало, и ты многое поймёшь» К. Прутков
Go to the top of the page
 
+Quote Post
BSVi
сообщение Jan 3 2010, 09:56
Сообщение #3


Частый гость
**

Группа: Свой
Сообщений: 76
Регистрация: 18-12-07
Из: Киев
Пользователь №: 33 391



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

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

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

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

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

Попробовал, так оно и есть - printf выводит в Terminal I/O по умолчанию, может пригодится когданибуть, спасибо еще раз )
Скорости, естественно ожидать не приходится - сам printf - штука тяжеловесная, да еще и debugWire как интерфейс, но иногда может быть полезным.


--------------------
http://bsvi.ru/ - блог эмбеддера
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 18th July 2025 - 00:00
Рейтинг@Mail.ru


Страница сгенерированна за 0.01365 секунд с 7
ELECTRONIX ©2004-2016