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水木清华站∶精华区