BBS水木清华站∶精华区

DEBUGGING OPTIONS 
       GNU CC has various special options that are used  for  de- 
       bugging either your program or GCC: 
 
       -g     Produce debugging information in the operating sys- 
              tem's native format (stabs, COFF, XCOFF, or DWARF). 
              GDB can work with this debugging information. 
 
              On most systems that use stabs format, `-g' enables 
              use of extra debugging information  that  only  GDB 
              can  use;  this  extra  information makes debugging 
              work better in GDB but will probably make other de- 
              buggers  crash  or  refuse to read the program.  If 
              you want to control for certain whether to generate 
              the  extra  information, use `-gstabs+', `-gstabs', 
              `-gxcoff+',  `-gxcoff',  `-gdwarf+',  or  `-gdwarf' 
              (see below). 
 
              Unlike most other C compilers, GNU CC allows you to 
              use `-g' with `-O'.  The shortcuts taken  by  opti- 
              mized  code may occasionally produce surprising re- 
              sults: some variables you declared may not exist at 
              all; flow of control may briefly move where you did 
              not expect it; some statements may not be  executed 
              because they compute constant results or their val- 
              ues were already at hand; some statements may  exe- 
              cute  in  different  places because they were moved 
              out of loops. 
 
              Nevertheless it proves possible to debug  optimized 
              output.   This makes it reasonable to use the opti- 
              mizer for programs that might have bugs. 
 
       The following options are useful when GNU CC is  generated 
       with the capability for more than one debugging format. 
 
       -ggdb  Produce  debugging information in the native format 
              (if that is supported), including GDB extensions if 
              at all possible. 
 
       -gstabs 
              Produce  debugging  information in stabs format (if 
              that is supported), without GDB  extensions.   This 
              is the format used by DBX on most BSD systems. 
 
       -gstabs+ 
              Produce  debugging  information in stabs format (if 
              that is supported), using GNU extensions understood 
              only  by  the GNU debugger (GDB).  The use of these 
              extensions is likely to make other debuggers  crash 
              or refuse to read the program. 
 
       -gcoff Produce  debugging  information  in COFF format (if 
              that is supported).  This is the format used by SDB 
              on  most System V systems prior to System V Release 
              4. 
 
       -gxcoff 
              Produce debugging information in XCOFF  format  (if 
              that is supported).  This is the format used by the 
              DBX debugger on IBM RS/6000 systems. 
 
       -gxcoff+ 
              Produce debugging information in XCOFF  format  (if 
              that is supported), using GNU extensions understood 
              only by the GNU debugger (GDB).  The use  of  these 
              extensions  is likely to make other debuggers crash 
              or refuse to read the program. 
 
       -gdwarf 
              Produce debugging information in DWARF  format  (if 
              that is supported).  This is the format used by SDB 
              on most System V Release 4 systems. 
 
       -gdwarf+ 
              Produce debugging information in DWARF  format  (if 
              that is supported), using GNU extensions understood 
              only by the GNU debugger (GDB).  The use  of  these 
              extensions  is likely to make other debuggers crash 
              or refuse to read the program. 
 
       -glevel 
       -ggdblevel 
       -gstabslevel 
       -gcofflevel -gxcofflevel 
 
       -gdwarflevel 
              Request debugging information and also use level to 
              specify how much information.  The default level is 
              2. 
 
              Level 1 produces minimal  information,  enough  for 
              making  backtraces in parts of the program that you 
              don't plan to debug.  This includes descriptions of 
              functions  and  external variables, but no informa- 
              tion about local variables and no line numbers. 
 
              Level 3 includes extra information, such as all the 
              macro definitions present in the program.  Some de- 
              buggers support macro expansion when you use `-g3'. 
 
       -p     Generate  extra  code  to write profile information 
              suitable for the analysis program prof. 
 
       -pg    Generate extra code to  write  profile  information 
              suitable for the analysis program gprof. 
 
       -a     Generate  extra  code  to write profile information 
              for basic blocks, which will record the  number  of 
              times  each  basic  block  is  executed.  This data 
              could be analyzed by a program  like  tcov.   Note, 
              however,  that  the  format of the data is not what 
              tcov expects.  Eventually GNU gprof should  be  ex- 
              tended to process this data. 
 
       -dletters 
              Says  to make debugging dumps during compilation at 
              times specified by letters.  This is used  for  de- 
              bugging  the  compiler.  The file names for most of 
              the dumps are made  by  appending  a  word  to  the 
              source    file    name    (e.g.    `foo.c.rtl'   or 
              `foo.c.jump'). 
 
       -dM    Dump all macro definitions, at the end  of  prepro- 
              cessing, and write no output. 
 
       -dN    Dump  all macro names, at the end of preprocessing. 
 
       -dD    Dump all macro definitions, at the end  of  prepro- 
              cessing, in addition to normal output. 
 
       -dy    Dump debugging information during parsing, to stan- 
              dard error. 
 
       -dr    Dump after RTL generation, to `file.rtl'. 
 
       -dx    Just generate RTL for a function instead of compil- 
              ing it.  Usually used with `r'. 
 
       -dj    Dump after first jump optimization, to `file.jump'. 
 
       -ds    Dump after CSE  (including  the  jump  optimization 
              that sometimes follows CSE), to `file.cse'. 
 
       -dL    Dump after loop optimization, to `file.loop'. 
 
       -dt    Dump  after the second CSE pass (including the jump 
              optimization  that  sometimes  follows   CSE),   to 
              `file.cse2'. 
 
       -df    Dump after flow analysis, to `file.flow'. 
 
       -dc    Dump     after    instruction    combination,    to 
              `file.combine'. 
 
       -dS    Dump after the first instruction  scheduling  pass, 
              to `file.sched'. 
 
       -dl    Dump    after   local   register   allocation,   to 
              `file.lreg'. 
 
       -dg    Dump   after   global   register   allocation,   to 
              `file.greg'. 
 
       -dR    Dump  after the second instruction scheduling pass, 
              to `file.sched2'. 
 
       -dJ    Dump after last jump optimization, to `file.jump2'. 
 
       -dd    Dump    after   delayed   branch   scheduling,   to 
              `file.dbr'. 
 
       -dk    Dump after conversion from registers to  stack,  to 
              `file.stack'. 
 
       -da    Produce all the dumps listed above. 
 
       -dm    Print statistics on memory usage, at the end of the 
              run, to standard error. 
 
       -dp    Annotate the assembler output with a comment  indi- 
              cating which pattern and alternative was used. 
 
       -fpretend-float 
              When  running  a  cross-compiler,  pretend that the 
              target machine uses the same floating point  format 
              as  the host machine.  This causes incorrect output 
              of the actual floating constants,  but  the  actual 
              instruction  sequence  will probably be the same as 
              GNU CC would make when running on  the  target  ma- 
              chine. 
 
       -save-temps 
              Store the usual "temporary" intermediate files per- 
              manently; place them in the current  directory  and 
              name  them based on the source file.  Thus, compil- 
              ing `foo.c' with  `-c  -save-temps'  would  produce 
              files `foo.cpp' and `foo.s', as well as `foo.o'. 
 
       -print-file-name=library 
              Print  the  full  absolute name of the library file 
              library  that would be used  when  linking--and  do 
              not  do  anything  else.   With this option, GNU CC 
              does not compile or link anything; it  just  prints 
              the file name. 
 
       -print-libgcc-file-name 
              Same as `-print-file-name=libgcc.a'. 
 
       -print-prog-name=program 
              Like `-print-file-name', but searches for a program 
              such as `cpp'. 
 

BBS水木清华站∶精华区