ARM-gcc 堆栈使用文件为空

ARM-gcc stack usage files empty

我正在尝试使用 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 也存在此问题。

你知道这个问题吗?或者另一种控制堆栈使用的解决方案?

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

禁用 -flto 允许生成 .su 文件。

我真的不知道原因,因为我通过 enabling/disabling 标志一个一个地弄清楚了。此外,通过删除 -flto,链接器会失败,但会计算堆栈使用情况。