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

 
 
> Массив в отладчике, не отображается массив о окне Watch
bingo
сообщение Dec 28 2016, 06:46
Сообщение #1


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

Группа: Свой
Сообщений: 88
Регистрация: 9-04-12
Пользователь №: 71 256



Добрый день.
Раньше использовал EWARM v.6.4 и в окне Watch отладчика массив отображался в виде раскрывающегося дерева элементов массива

Сейчас, из-за более нового ядра, перешел на EWARM v.7.4 (пробовал и 8.1).
Все хорошо работает, но заметил, что массив окне Watch отладчика не отображается, а пишет <error>
Код упростил до минимума. Результат тот же.
Подскажите источник проблемы, если кто с этим имел дело

// file main.c
#include "stm32f37x.h"

//***************************************************************************
int main(void) {
int Data = 0;

int Tab1[30];
Tab1[1] = 2;
Data = Tab1[1];
Tab1[2] = Tab1[1];
}

Сообщение отредактировал bingo - Dec 28 2016, 07:14
Эскизы прикрепленных изображений
Прикрепленное изображение
 
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов (1 - 7)
Сергей Борщ
сообщение Dec 28 2016, 08:13
Сообщение #2


Гуру
******

Группа: Модераторы
Сообщений: 8 455
Регистрация: 15-05-06
Из: Рига, Латвия
Пользователь №: 17 095



QUOTE (bingo @ Dec 28 2016, 08:46) *
Подскажите источник проблемы,
Компилятор выполнил пожелание программиста иметь маленькую быструю программу и выкинул нафиг весь код, который не делает ничего полезного. А поскольку после этого массив тоже оказался не нужным - он выкинул и его. Вполне адекватное поведение.


--------------------
На любой вопрос даю любой ответ
"Write code that is guaranteed to work, not code that doesn’t seem to break" (C++ FAQ)
Go to the top of the page
 
+Quote Post
bingo
сообщение Dec 28 2016, 08:59
Сообщение #3


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

Группа: Свой
Сообщений: 88
Регистрация: 9-04-12
Пользователь №: 71 256



Цитата(Сергей Борщ @ Dec 28 2016, 12:13) *
Компилятор выполнил пожелание программиста иметь маленькую быструю программу и выкинул нафиг весь код, который не делает ничего полезного. А поскольку после этого массив тоже оказался не нужным - он выкинул и его. Вполне адекватное поведение.



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

1. Поведение отладчика в "большой медленной программе" было такое же. Поэтому я и написал.

2. Наверное Вы хотите мне напомнить про модификатор volatile (или __IO).
Как это бывает нужно в обработчике прерывания, например.
Но увы и это не работает

3. На определенном участке этой программульки все же массив нужен. Именно там я его и смотрю
И его собтимизировать на этом участке нельзя
Да и переменную компилятор не стал "выбрасывать"


Сообщение отредактировал bingo - Dec 28 2016, 09:07
Go to the top of the page
 
+Quote Post
Сергей Борщ
сообщение Dec 28 2016, 10:55
Сообщение #4


Гуру
******

Группа: Модераторы
Сообщений: 8 455
Регистрация: 15-05-06
Из: Рига, Латвия
Пользователь №: 17 095



QUOTE (bingo @ Dec 28 2016, 10:59) *
3. На определенном участке этой программульки все же массив нужен.
Увы, навыки телепатии в последнее время подводят - я отвечал о представленной вами на снимке экрана программе. В ней этот массив не влияет на наблюдаемое поведение (observable behavior) абстрактной машины. Сам я с ИАРом давно не работаю, если никто не поможет - попробуйте написать запрос в техподдержку ИАРа.


--------------------
На любой вопрос даю любой ответ
"Write code that is guaranteed to work, not code that doesn’t seem to break" (C++ FAQ)
Go to the top of the page
 
+Quote Post
jcxz
сообщение Dec 28 2016, 11:02
Сообщение #5


Гуру
******

Группа: Свой
Сообщений: 5 228
Регистрация: 3-07-08
Из: Омск
Пользователь №: 38 713



Цитата(bingo @ Dec 28 2016, 11:59) *
1. Поведение отладчика в "большой медленной программе" было такое же. Поэтому я и написал.

Это как раз один из тех случаев, когда "размер не имеет значения".

Цитата(bingo @ Dec 28 2016, 11:59) *
2. Наверное Вы хотите мне напомнить про модификатор volatile (или __IO).
Как это бывает нужно в обработчике прерывания, например.
Но увы и это не работает

Нет, мы хотим напомнить про другой модификатор, а именно __root для IAR.
И неиспользуемый код/данные выкидывает не компилятор, а компоновщик, а ему пофиг на volatile, он вообще про неё не знает.
volatile вообще никакого отношения не имеет к вопросу. Это совсем о другом.
Другое дело:
static __root int x;

Цитата(bingo @ Dec 28 2016, 11:59) *
3. На определенном участке этой программульки все же массив нужен. Именно там я его и смотрю
И его собтимизировать на этом участке нельзя
Да и переменную компилятор не стал "выбрасывать"

По приведённому Вами коду чётко видно, что компилятор/компоновщик абсолютно прав.
А что там у Вас ещё где есть - то тут телепатов нет.
Go to the top of the page
 
+Quote Post
jorikdima
сообщение Dec 28 2016, 17:43
Сообщение #6


тут может быть ваша реклама
*****

Группа: Свой
Сообщений: 1 164
Регистрация: 15-03-06
Из: Санкт-Петербург/CA
Пользователь №: 15 280



Часто на этапе отладки проще прагмой убрать оптимизацию в конкретной функции. А так постоянно будете натыкаться на подобное.
Go to the top of the page
 
+Quote Post
bingo
сообщение Dec 29 2016, 00:52
Сообщение #7


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

Группа: Свой
Сообщений: 88
Регистрация: 9-04-12
Пользователь №: 71 256



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

Все прекрасно работает и даже без модификаторов
Просто меня немножко "переклинило" wacko.gif и я ошибся в записи
Правильный вариант на картинке




Цитата(Сергей Борщ @ Dec 28 2016, 13:55) *
Сам я с ИАРом давно не работаю..

Подскажите пожалуйста, а чем Вы пользуетесь?

Сообщение отредактировал bingo - Dec 29 2016, 03:14
Эскизы прикрепленных изображений
Прикрепленное изображение
 
Go to the top of the page
 
+Quote Post
Сергей Борщ
сообщение Dec 29 2016, 06:26
Сообщение #8


Гуру
******

Группа: Модераторы
Сообщений: 8 455
Регистрация: 15-05-06
Из: Рига, Латвия
Пользователь №: 17 095



QUOTE (bingo @ Dec 29 2016, 02:52) *
Подскажите пожалуйста, а чем Вы пользуетесь?
gcc+eclipse+openOCD


--------------------
На любой вопрос даю любой ответ
"Write code that is guaranteed to work, not code that doesn’t seem to break" (C++ FAQ)
Go to the top of the page
 
+Quote Post

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

 


RSS Текстовая версия Сейчас: 22nd July 2025 - 07:41
Рейтинг@Mail.ru


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