I'm trying to determine whether there are any downsides to building release binaries with debug symbols left in. For our release builds, we compile with -O3
at the moment and if there are any crashes, the cores are next to useless.
So, what I would like to do is modify the build to leave in debug symbols, i.e. -O3 -g
, but there is resistance to this as the feeling is that there could be some impact (aside from size of binary). I know that the size issue can be fixed by stripping out the symbols, but is there anything else subtle that I'm missing?
Separate symbols from binary.
g++ -ggdb -o target obj1.o obj2.o ...
strip target --only-keep-debug -o target.dbg
strip target
Then in gdb, use symbol-file target.dbg
EDIT: On the actual question:
The downsides are:
Execution speed is not affected - Debug symbols are simply added to the binary in a separate section, they may affect your virtual address space size but nothing else.