我试图确定是否有任何缺点来构建发布二进制文件,并留下调试符号。对于我们的发布版本,我们现在编译时使用-O3
,如果有任何崩溃,那么核心几乎是无用的。在发布版本中留下调试符号是否有缺点?
所以,我希望做的是修改生成的调试符号离开,即-O3 -g
,但这种阻力的感觉是,可能会有一些影响(除了二进制大小) 。我知道尺寸问题可以通过去除符号来解决,但是我还有什么其他细节?
我试图确定是否有任何缺点来构建发布二进制文件,并留下调试符号。对于我们的发布版本,我们现在编译时使用-O3
,如果有任何崩溃,那么核心几乎是无用的。在发布版本中留下调试符号是否有缺点?
所以,我希望做的是修改生成的调试符号离开,即-O3 -g
,但这种阻力的感觉是,可能会有一些影响(除了二进制大小) 。我知道尺寸问题可以通过去除符号来解决,但是我还有什么其他细节?
来自二进制的单独符号。
g++ -ggdb -o target obj1.o obj2.o ...
strip target --only-keep-debug -o target.dbg
strip target
然后在gdb,使用symbol-file target.dbg
编辑:实际的问题:
的缺点是:
执行速度不受影响 - 调试符号仅在单独的部分添加到二进制文件中,它们可能会影响您的虚拟地址空间大小,但没有其他影响。
它是一个商业应用程序?你担心逆向工程吗? – EboMike 2011-04-06 16:14:51
@EboMike,不,这不适用于我们的设置。 – Nim 2011-04-06 16:26:08