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

 
 
> Доступность переменных в AVRStudio
drvlas
сообщение Sep 15 2010, 06:30
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 50
Регистрация: 3-09-10
Пользователь №: 59 263



При работе симулятора в Студии в окне Watch значение некотрых переменных отображается и модифицируется в ручном режиме нормально. Но о некоторых из них отладчик пишет

Not in scope
или
Location not valid

В справочнике про эти сообщения ничего не нашел. Ну, если с первым еще более-менее ясно (ясен смысл, хотя когда именно переменная попадает в видимость - не всегда совпадает с моими представлениями), то вот второе сообщение меня сбивает с толку. Во-первых, на это сообщение, по-моему, попадают чаще всего (но не всегда!) enumerated переменные, элементы структур. Но иногда и обычные (я просто изменял тип переменной из ENUM в CHAR - для пробы).

Можете объяснить толком точный смысл этих сообщений - или послать туда, где объясняют?

И еще. Влияет ли на видимость переменных многофайловость проекта?

Спасибо!
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
SasaVitebsk
сообщение Sep 15 2010, 07:07
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 2 712
Регистрация: 28-11-05
Из: Беларусь, Витебск, Строителей 18-4-220
Пользователь №: 11 521



А, собственно, что тут непонятного?

1) Многофайловый проект или нет - не имеет значения.
2) Имеет значение - видима ли переменная в момент отладки.
3) Location not valid - скорее всего - переменная была выкинута оптимизатором.

Особенно это очевидно при работе с локальными переменнами.
Например в какой-то ф-ции есть локальная переменная. Компилятор её разместил в регистре. Так как её вам показать до того пока она внесена в регистр и после освобождения?
Go to the top of the page
 
+Quote Post
drvlas
сообщение Sep 15 2010, 07:34
Сообщение #3


Участник
*

Группа: Участник
Сообщений: 50
Регистрация: 3-09-10
Пользователь №: 59 263



Цитата(SasaVitebsk @ Sep 15 2010, 10:07) *
А, собственно, что тут непонятного?


Спасибо за ответ!

Непонятно как раз, что делать-то? И, судя по форуму на ФРИКах, эта непонятка не только у меня. Их достойных ответов упомяну, пожалуй, этот и последний постинг уважаемого шведа от Jul 17, 2010 - 02:01 PM здесь. Для тех, кто не дружит с аглицким, ответ от SasaVitebsk дополню следующим почерпнутым только что знанием:

Что можно сделать?

1) Ждать нового релиза ВинАВР и-или Студии
2) Выключить оптимизацию (но программа получается, вообще говоря, уже далеко не та)
3) Внимательно просматривать в режиме дизассемблера и увидеть, в каких регистрах возникает кратковременно именно то значение, для хранения которого Вы создали переменную (а сука оптимизатор выкинул).

Больше я ничего не понял. Или есть еще трюки?
Go to the top of the page
 
+Quote Post
xelax
сообщение Sep 15 2010, 11:48
Сообщение #4


Местный
***

Группа: Свой
Сообщений: 370
Регистрация: 7-11-06
Пользователь №: 22 035



Цитата(drvlas @ Sep 15 2010, 11:34) *
1) Ждать нового релиза ВинАВР и-или Студии
2) Выключить оптимизацию (но программа получается, вообще говоря, уже далеко не та)
3) Внимательно просматривать в режиме дизассемблера и увидеть, в каких регистрах возникает кратковременно именно то значение, для хранения которого Вы создали переменную (а сука оптимизатор выкинул).

Больше я ничего не понял. Или есть еще трюки?

4. Как вариант можно для отладки алгоритма к такой переменной добавить static volatile, тогда компилятор её не соптимизирует в регистр.
Go to the top of the page
 
+Quote Post



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

 


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


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