代码之家  ›  专栏  ›  技术社区  ›  claf

在使用gdb进行调试时可能导致问题的gcc选项

  •  7
  • claf  · 技术社区  · 15 年前

    我想知道我是否可以得到一个GCC选项列表,它会导致GDB行为异常。

    当然,我们都知道使用优化选项(例如-o3)会在gdb中导致奇怪的行为,但是其他哪些选项会产生这种影响?

    (我目前正尝试在gdb中运行mpeg2解码器,即使删除了优化标志,我也会得到奇怪的行为…)

    2 回复  |  直到 9 年前
        1
  •  9
  •   Chris Krycho    10 年前

    我认为在调用GCC进行调试时很难说出不应该使用的标志。 这个 gcc docs 请注意,默认的调试标志是 -g -O2 并使用 -g -O0 -fno-inline 禁用任何优化和函数内联。

    在我看来,如果你真的想保证没有什么东西会干扰你的调试过程,你只需要编译 -G-O0-FNO内联 旗帜。

        2
  •  0
  •   jsallaberry    9 年前

    如上所述 GCC documentation ,您应该使用-og:

    -OG

    优化调试经验。-OG支持不干扰调试的优化。它应该是标准编辑-编译-调试周期的优化级别选择,在保持快速编译的同时提供合理的优化级别和良好的调试经验。

    它还描述了每个optmation标志以及它可能如何影响调试。