在gcc中使用-g和-O2选项

有没有人经历混合-g(调试符号)和-O2(最佳安全优化)与gcc编译器?
我必须调试分发给最终用户的发布程序的崩溃,这些程序可以将我发回核心文件。
我一直习惯称:

gdb <> <>

并看看问题出在哪里。 现在我可以看到调用跟踪但没有调试符号我遇到了麻烦。

任何的想法?

我们在生产环境中一起使用它们,如果客户只看到一次崩溃,这使调试变得更容易。 它可以让你很好地了解问题所在(不是内存损坏)。

理论上,尽管可执行文件变大,但添加-g不应该真正影响性能。 在嵌入式环境中,这是一个很大的权衡。

它工作正常。

或者,由于优化,有时您使用调试器的源代码与源完全不匹配,但IMHO尽管具有调试符号使调试更容易。