Перейти к содержанию
    

Непонятное поведение стека

Есть IAR 4.11 for MSP430, вот наиболее важный код программы:

//files.h:
...
typedef struct _DIRCACHE
{
  unsigned short filenumber;
  char name[13];
}DIRCACHE;
...

//files.cpp:
#include "files.h"
...
void func()
{
...
  DIRCACHE dircache[32];
...
}

 

 

При вызове func() отладчик IAR сообщает о переполнении стека (см. аттач), но программа продолжает нормально работать. Из-за чего это происходит и как это устранить? И что такое <pad>?

post-37959-1226676002_thumb.jpg

Изменено пользователем LCD

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

А у вас есть в наличии 512 байт стека для локальной переменной?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

При заходе в функцию, когда отладчик покажет сообщение о переполнение стека посмотрите что находится в SP.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Нет, о переполнении он не сообщает, но в окне стека показывает какой-то бред.

Изменено пользователем LCD

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Нет, о переполнении он не сообщает, но в окне стека показывает какой-то бред.
А вы случайно ОС не используете в своем проекте?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Нет, о переполнении он не сообщает...
При вызове func() отладчик IAR ообщает о переполнении стека (см. аттач)
В бы уже определились...

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

А вы случайно ОС не используете в своем проекте?

ОС - это RTOS или подобное? Нет, не использую.

В бы уже определились...

Нет, не переполняется. Но при остановке на брейкпоинте отладчик долго "думает", наверное, считывает то, что считает содержимым стека.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Нет, не переполняется. Но при остановке на брейкпоинте отладчик долго "думает", наверное, считывает то, что считает содержимым стека.
Возможность просмотра стека со списком переменных появилась толко в 4.11B (в 4.10A это не работатет - просто выводится содержимое стека). Это глюк отладчика, точнее плугина "Stack".

Покуда (имхо) этой версией мало кто пользуется, то данных проблем не испытывали. Если нужно посмотреть локальные переменные пользуйтесь View/Locals.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Спасибо, но у меня остались сомнения, что это не глюк.
Так расскажите...

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...