c++ - 在发布版本中保留调试符号有缺点吗?

标签 c++ build g++ debug-symbols

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

编辑:关于实际问题:

缺点是:

  • 更轻松的逆向工程(如果您担心的话)
  • 更大的二进制文件

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

关于c++ - 在发布版本中保留调试符号有缺点吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5569644/

相关文章:

build - 运行并行任务

java.class 文件的目录结构与源文件相同吗?

c++ - 使用 lambda 的可变参数模板 : error with g++ but running with clang++

c++ - 如何构建简单的 OpenCV 程序

c++ - VC++ 实验模块不起作用

c++ - Qt 在屏幕上正确放置新窗口,鼠标居中,移入屏幕

c++ - 我怎样才能让 g++ 打印关于函数参数类型转换的警告?

C++ 纯虚函数也是定义还是只是声明?

python - 如何使用Python请求模块和TeamCity API来触发构建?

c - If 语句检查 argv 是否为数字