ARM-gcc堆栈使用文件为空

时间:2016-10-17 08:38:24

标签: c gcc arm stack-overflow

我正在尝试使用arm-gcc工具链来分析我的嵌入式程序的堆栈使用情况。该程序是单线程的,所以我通常可以使用-fstack-usage 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上。

你对这个问题有所了解吗?或者另一种控制堆栈使用的解决方案?

1 个答案:

答案 0 :(得分:2)

经过大量测试后,我找到了一个解决方案:-fstack-usage似乎与-flto不兼容。

禁用-flto可以生成.su文件。

我不知道原因,因为我通过逐个启用/禁用标记来解决这个问题。此外,通过删除-flto,链接器会失败,但会计算堆栈使用情况。