Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Непонятное поведение стека
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > Cредства разработки для МК > IAR
LCD
Есть 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>?
diper
А у вас есть в наличии 512 байт стека для локальной переменной?
LCD
Да, я стек сделал 4 кб. Но ИАР пишет, что ему надо 170 кб!
LCD
Скриншот был сделан, когда char name[] был не 13, а 16 байт.
diper
При заходе в функцию, когда отладчик покажет сообщение о переполнение стека посмотрите что находится в SP.
LCD
Нет, о переполнении он не сообщает, но в окне стека показывает какой-то бред.
Сергей Борщ
Цитата(LCD @ Nov 15 2008, 00:24) *
Нет, о переполнении он не сообщает, но в окне стека показывает какой-то бред.
А вы случайно ОС не используете в своем проекте?
diper
Цитата(LCD @ Nov 15 2008, 01:24)
Нет, о переполнении он не сообщает...
Цитата(LCD @ Nov 14 2008, 18:20)
При вызове func() отладчик IAR ообщает о переполнении стека (см. аттач)
В бы уже определились...
LCD
Цитата(Сергей Борщ @ Nov 15 2008, 11:29) *
А вы случайно ОС не используете в своем проекте?

ОС - это RTOS или подобное? Нет, не использую.
Цитата(diper @ Nov 15 2008, 11:57) *
В бы уже определились...

Нет, не переполняется. Но при остановке на брейкпоинте отладчик долго "думает", наверное, считывает то, что считает содержимым стека.
diper
Цитата(LCD @ Nov 15 2008, 18:22) *
Нет, не переполняется. Но при остановке на брейкпоинте отладчик долго "думает", наверное, считывает то, что считает содержимым стека.
Возможность просмотра стека со списком переменных появилась толко в 4.11B (в 4.10A это не работатет - просто выводится содержимое стека). Это глюк отладчика, точнее плугина "Stack".
Покуда (имхо) этой версией мало кто пользуется, то данных проблем не испытывали. Если нужно посмотреть локальные переменные пользуйтесь View/Locals.
LCD
Спасибо, но у меня остались сомнения, что это не глюк.
diper
Цитата(LCD @ Nov 18 2008, 12:42) *
Спасибо, но у меня остались сомнения, что это не глюк.
Так расскажите...
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.