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

Nim*_*Nim 11 c++ g++ build debug-symbols

我正在尝试确定是否存在构建具有调试符号的发布二进制文件的任何缺点.对于我们的发布版本,我们-O3目前正在编译,如果有任何崩溃,则核心旁边是无用的.

所以,我想要做的是修改构建以留在调试符号中,即-O3 -g,但是存在阻力,因为感觉可能会有一些影响(除了二进制的大小).我知道尺寸问题可以通过剥离符号来解决,但还有其他任何我想念的微妙问题吗?

Eri*_*rik 23

从二进制中分离符号.

g++ -ggdb -o target obj1.o obj2.o ...
strip target --only-keep-debug -o target.dbg
strip target
Run Code Online (Sandbox Code Playgroud)

然后在gdb中使用 symbol-file target.dbg

编辑:关于实际问题:

缺点是:

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

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