【发布时间】:2013-08-02 17:44:59
【问题描述】:
我见过的大多数构建环境至少有两种策略:调试构建与最终/优化/发布构建。对于 gcc,这通常意味着 -g 与 -O 的某个版本。现在我看到优化版本是用-O3 构建的,而调试版本是用-g3 和 -O3 构建的。 man gcc 确实表明这是可能的,但对于真正的调试目的,这对我来说似乎违反直觉。
查看http://gcc.gnu.org/onlinedocs/gcc/Optimize-Options.html 让我想起了-Og,它允许在不干扰调试的情况下进行优化。这对我来说是有道理的,但是除非您基本上是在尝试调试 gcc 自己的优化能力,否则有什么令人信服的理由使用 -O3 -g3 进行调试?
【问题讨论】:
-
.. 或者如果您正在尝试调试优化的代码(可能与未优化的代码有不同的错误)。究竟是什么问题?
-
问题是为什么我正在查看的环境使用
-O3 -g3编译调试版本。我试图弄清楚一个人可以学到哪些信息,而只用-g3是无法学到的。我隐约知道您也提供了答案,但我正在寻找示例或进一步澄清。
标签: debugging optimization gcc compiler-construction build