【发布时间】:2011-01-14 15:21:16
【问题描述】:
是否有人将 -g(调试符号)和 -O2(最佳安全优化)与 gcc 编译器混合使用?
我必须调试分发给最终用户的发布程序的崩溃,这可能会将核心文件发回给我。
我一直习惯打电话:
gdb > >
看看问题出在哪里。现在我只能看到调用跟踪但没有调试符号我很麻烦。
有什么想法吗?
【问题讨论】:
是否有人将 -g(调试符号)和 -O2(最佳安全优化)与 gcc 编译器混合使用?
我必须调试分发给最终用户的发布程序的崩溃,这可能会将核心文件发回给我。
我一直习惯打电话:
gdb > >
看看问题出在哪里。现在我只能看到调用跟踪但没有调试符号我很麻烦。
有什么想法吗?
【问题讨论】:
效果很好。
或者好吧,由于优化,有时您使用调试器单步执行的源代码与源代码不完全匹配,但恕我直言,尽管有调试符号,但调试更容易。
【讨论】:
-g 对代码没有任何影响,只会对生成的额外调试数据产生影响。
我们在生产环境中同时使用这两种方法,如果客户只看到一次崩溃,调试会容易得多。它可以让您很好地了解问题出在哪里(不是内存损坏)。
理论上添加 -g 应该不会真正影响性能,尽管可执行文件变大了。在嵌入式环境中,这是一个很大的权衡。
【讨论】: