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
,链接器会失败,但会计算堆栈使用情况。
我正在尝试使用 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
,链接器会失败,但会计算堆栈使用情况。