777777 0 15 июля, 2011 Опубликовано 15 июля, 2011 · Жалоба Есть подозрение, что стек налазит на данные. Как это определить? Есть ли какие-то отладочные средства или вручную изгаляться? Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
izerg 9 15 июля, 2011 Опубликовано 15 июля, 2011 · Жалоба А что из отладочных средств у Вас доступно? Многие компиляторы в отчетах дают статистику по использованию стеков функциями, по ним можно косвенно судить о максимальной глубине. Некоторые ИДЕ умеют показывать текущий занятый стек. Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
777777 0 15 июля, 2011 Опубликовано 15 июля, 2011 · Жалоба А что из отладочных средств у Вас доступно? AvrStudio + JTAGICEmkII Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
sergeeff 1 15 июля, 2011 Опубликовано 15 июля, 2011 · Жалоба Вы посмотрите как, например, это решено в новой версии scmRTOS. В начале весь стек заполняется неким патерном (маловероятным для данного типа процессора кодовым числом, типа 0xdeaddead). При запуске тестовой функции оценивается до какого уровня был использован стек. На практике метода проста. Выделяем вначале все что можно под стек. Запускаем свои задачи на некоторое время (зависит от задачи). Смотрим потребленный стек. Это и есть минимально необходимый объем. Увеличиваем его на 20-30% для надежности. Такой объем стека задаем в параметрах проекта. Насколько мне известно, самый простой и надежный способ оценки потребности в стеке. Вообще этот вопрос на форуме несколько раз обсуждался. Искать, конечно, лень? Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться