Инструмент для борьбы с переполнением стека

Инструмент для борьбы с переполнением стека

Компания Express Logic Inc. представила новый программный инструмент, который поможет разработчикам избегать проблем с переполнением стека, от которых издавна страдают встроенные системы.

Новый инструмент, названный  StackX, проводит тщательный анализ всего приложения на уровне машинного кода и вычисляет самые неблагоприятные сценарии использования стека.

Вильям Лэйми, президент Express Logic, утверждает, что только их компания может помочь разработчикам определить оптимальный объем стека, необходимый для каждого отдельного программного потока и дать им знать, если выделенного ими количества памяти недостаточно.

«Стеком называют участок памяти, в котором хранятся локальные переменные и через которую пропускаются аргументы функции. В языке программирования С объем стека задается программистом, отталкиваясь от таких факторов, как архитектура системы, операционная система, конструкция системы и объем доступной памяти» - сказал Лэйми.

В случае, если для выполнения программы требуется больший объем стека, чем его было предоставлено, стек переполняется. В большинстве случаев это происходит без предупреждения и может повредить данные в других участках памяти, что приводит к аварийному завершению программы.

Отследить причину таких сбоев очень сложно, что заставляет программистов тратить большое количество времени и усилий на поиски места, где происходит переполнение. Вследствие этого программисты чаще всего просто увеличивают объем стека, чтобы застраховаться от сбоя.

Лэйми сказал, что определение оптимального размера стека всегда производилось методом проб и ошибок. Он обратил внимание, что StackX решает эту проблему, автоматически вычисляя необходимый размер стека за разработчиков, позволяя им выделять минимальный размер стека, необходимый для корректной работы приложения и избегать выделения лишней памяти.

 «StackX анализирует исполняемый файл программы в формате .elf, составляя схему всех вызовов функций, прерываний, локальных переменных и других факторов, влияющих на использование стека» - сказал Лэйми. «Это позволяет программе вычислять оптимальный размер стека для каждого программного потока. StackX составляет древовидную схему вызовов процедур, которая показывает максимальный объем стека для каждого программного потока. При помощи этой схемы программисты могут лучше увидеть ход работы своей программы и оптимизировать свой код»

StackX использует собственный, патентуемый алгоритм, имеющий внушительную точность и эффективность и требующий лишь исполняемый файл в формате .elf. Несмотря на то, что StackX может быть использован с любым .elf файлом, StackX особенно хорошо работает с приложениями, написанными для операционной системы реального времени ThreadX.

Кроме того, программа распознает условия рекурсии, в которых требовался бы бесконечный объем памяти для предотвращения потенциального переполнения. Теперь программисты могут быстро исправить свой код вместо тщетных попыток исправить проблему увеличением объема стека.

StackX можно приобрести у Express Logic по цене 1000 долларов на условиях бессрочной лицензии.