【问题标题】:-fno-omit-frame-pointer without optimization-fno-omit-frame-pointer 没有优化
【发布时间】:2009-08-27 12:09:05
【问题描述】:

我想知道 -fno-omit-frame-pointer 在没有优化的情况下会做什么?

CXXFLAGS = -Wall -ggdb3 -DDEBUG -fno-omit-frame-pointer

不是所有级别的-O(除了-O0)都会自动开启fomit-frame-pointer吗?我假设在我的示例中默认为 -O0。

感谢和问候!

【问题讨论】:

  • 在 x86 和系列上,-fomit-frame-pointer 默认情况下启用以提高优化级别,因为它可能会妨碍调试。
  • 请注意,在x86-64和arm等架构上,默认不生成帧指针(在ABI中指定),因此该选项会导致编译器生成帧指针寄存器。

标签: c++ optimization pointers frame


【解决方案1】:

正如您已经暗示自己的那样,-fno-omit-frame-pointer 在您的情况下只是被忽略,因为在默认 -O0 中无论如何都不会省略帧指针。

【讨论】:

    【解决方案2】:

    据我了解,Ox 只是一组优化标志的快捷方式。默认优化为零,因此使用一个不带 Ox 的标志应该只进行该优化。

    在我看来,省略帧指针会增加调试难度以获得适度的性能提升。

    【讨论】:

    • “在我看来,省略帧指针...” - 它使堆栈跟踪几乎毫无用处。 bt full 将被削弱。
    猜你喜欢
    • 2022-01-05
    • 1970-01-01
    • 1970-01-01
    • 2013-01-17
    • 2014-11-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-11-04
    相关资源
    最近更新 更多