views:

41

answers:

1

I wonder why software shall be deployed with its related debugging symbols. What are advantages and disadvantages? Are there code revealing issues (information security related issues)?

+2  A: 

You can compile with or without debug info, or on unix systems, you can run strip to remove debugging info from a compiled executable.

A lack of debug info will:

  • shrink your binary size. Removing all the debug info can drop the file size by 50%
  • enable more compiler optimizations. Some compiler optimizations don't really work if you're still adding debug info.
  • make debugging harder.
    • You generally don't want to make it easier for your competitors and hackers to disassemble your product.
    • Although any core files will be less useful to developers.

So in general development, you want debug info, but for QA and release, you generally want to leave it out. If you supply libraries to customers that you trust more, you may be more inclined to leave it in.

Tim