当你想构建一个可调试的东西(特别是g ++,但也许与gcc共享一个答案)时,最好的-O级别是什么?换句话说,在构建"调试"目标而不是"释放"目标时.
当比较-O0和-O1(这里)时,gcc在线文档有点粗略.我的解释是-O1只能实现一个甚至可能影响可调试性的优化,即-fomit-frame-pointer.但引用该文档时,它只在-O1中启用,"这样做不会干扰调试." 我正确地解释了吗?
本网站上的另一篇文章(这里)特别谈到了-O2,答案基本上是"它可以工作,但是你会得到无序执行".其中,IMO可以从烦人到毁灭,取决于事物的跳跃程度.