繁体   English   中英

在发布版本中留下调试符号是否有缺点?

[英]Is there a downside to leaving in debug symbols in release builds?

我正在尝试确定是否存在构建具有调试符号的发布二进制文件的任何缺点。对于我们的发布版本,我们目前使用-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

编辑:关于实际问题:

缺点是:

  • 更容易逆向工程(如果这让您担心)
  • 更大的二进制文件

执行速度不受影响 - 调试符号只是在单独的部分中添加到二进制文件中,它们可能会影响您的虚拟地址空间大小,但不会影响其他任何内容。

它会影响大小,从而影响缓存和内存。

如果您阅读有关编译器选项的信息,您将看到它表示有时展开循环例如使代码SLOWER因为增加的大小破坏缓存并导致更多的内存提取。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM