DOC HOME SITE MAP MAN PAGES GNU INFO SEARCH PRINT BOOK
 

(gdb.info) Compilation

Info Catalog (gdb.info) Running (gdb.info) Starting
 
 Compiling for debugging
 =======================
 
    In order to debug a program effectively, you need to generate
 debugging information when you compile it.  This debugging information
 is stored in the object file; it describes the data type of each
 variable or function and the correspondence between source line numbers
 and addresses in the executable code.
 
    To request debugging information, specify the `-g' option when you
 run the compiler.
 
    Many C compilers are unable to handle the `-g' and `-O' options
 together.  Using those compilers, you cannot generate optimized
 executables containing debugging information.
 
    GCC, the GNU C compiler, supports `-g' with or without `-O', making
 it possible to debug optimized code.  We recommend that you _always_
 use `-g' whenever you compile a program.  You may think your program is
 correct, but there is no sense in pushing your luck.
 
    When you debug a program compiled with `-g -O', remember that the
 optimizer is rearranging your code; the debugger shows you what is
 really there.  Do not be too surprised when the execution path does not
 exactly match your source file!  An extreme example: if you define a
 variable, but never use it, GDB never sees that variable--because the
 compiler optimizes it out of existence.
 
    Some things do not work as well with `-g -O' as with just `-g',
 particularly on machines with instruction scheduling.  If in doubt,
 recompile with `-g' alone, and if this fixes the problem, please report
 it to us as a bug (including a test case!).
 
    Older versions of the GNU C compiler permitted a variant option
 `-gg' for debugging information.  GDB no longer supports this format;
 if your GNU C compiler has this option, do not use it.
 
Info Catalog (gdb.info) Running (gdb.info) Starting
automatically generated byinfo2html