Я работаю с многопоточным встроенным приложением. Каждому потоку присваиваются размеры стека в зависимости от его функциональности. Недавно мы обнаружили, что один из потоков исказил стек, указав массив локальных переменных, который был больше, чем размер стека. ОС - uItron.
Мое решение, Я зарегистрировал таймер на 10 мс, и этот таймер проверит повреждение стека.
Метод проверки коррупции стека, 1. Инициализируйте память стека с помощью некоторого уникального шаблона (я использую 0x5A5A5A5A) 2. Проверьте время, если верхняя часть памяти стека по-прежнему равна 0x5A5A5A5A
Мой вопрос,
Есть ли лучший способ проверить этот тип коррупции
Забыл добавить, добавив: OS: Itron, Процессор: ARM9. Компилятор: не является GCC (определенный ARM9, поставляемый поставщиком процессора)... И нет встроенной поддержки проверки стека...