2016-10-17 2 views
2

Я пытаюсь проанализировать использование стека моей встроенной программы с помощью инструментальной привязки arm-gcc. Программа однопоточная, поэтому я обычно могу анализировать стек, используя параметр -fstack-usage gcc.Файлы использования стека ARM-gcc пустые

Обычно эта опция генерирует файлы .su вместе с единицами компиляции. Они описывают использование стека для каждой функции. Однако в моем случае эти файлы пустые.

Вот пример содержимого файла .su (от https://mcuoneclipse.com/2015/08/21/gnu-static-stack-usage-analysis/):

main.c:36:6:bar 48 static 
main.c:41:5:foo 88 static 
main.c:47:5:main 8 static 

Я использую gcc-arm-none-eabi-5_4-2016q3, но проблема также присутствует на gcc-arm-none-eabi-5_3-2016q1.

У вас есть идея? Или другое решение для управления использованием стека?

+0

Вы указали опцию '-fstack-usage' с вашей командной строкой компиляции (не связывая линию)? Я пробовал это с gcc-arm-none-eabi-4_9-2015q2, и он отлично работает. –

+0

Я даю параметр как gcc (для компиляции), так и g ++ (для привязки). Я попытаюсь переключиться на ld в качестве компоновщика. – Gp2mv3

+0

Используйте gcc для связи вместо ld, это рекомендуется. –

ответ

2

После многих испытаний я нашел решение: -fstack-usage кажется несовместимым с -flto.

Отключение -flto позволяет сгенерировать файлы .su.

Я действительно не знаю причину, как я понял, включив/отключив флаги один за другим. Кроме того, удаляя -flto, компоновщик выходит из строя, но вычисления стека вычисляются.

Смежные вопросы