Debug format (-g -ggdb -gstabs ...)
Gordon Sadler
gbsadler1@lcisp.com
Sat Apr 21 23:47:00 GMT 2001
I hope someone can explain this better.
gdb 5.0 info gdb:
Support...C...
For best results when using GNU C++, use the stabs debugging format.
You can select that format explicitly with the `g++' command-line
options `-gstabs' or `-gstabs+'.
gcc 2.95.3 info gcc:
Invoking GCC...Debugging Options...
`-g'
Produce debugging information in the operating system'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
debuggers 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-1+', or
`-gdwarf-1' (see below).
...
`-ggdb'
Produce debugging information for use by GDB. This means to use
the most expressive format available (DWARF 2, stabs, or the
native format if neither of those are supported), including GDB
extensions if at all possible.
My understanding:
1. Using -g is the standard if you use gdb.
2. Using -ggdb should provide even more/better info for gdb to use.
3. gdb wants/uses -gstabs{+} for c++.
cat test.cpp
#include<stdio.h>
int main()
{
printf("hello ... \n");
return 0;
}
ls -l a.out ggdb gstabs* dwarf2
-rwxr-xr-x 1 gbsadler gbsadler 17773 Apr 22 01:25 a.out
-rwxr-xr-x 1 gbsadler gbsadler 15345 Apr 22 01:31 dwarf2
-rwxr-xr-x 1 gbsadler gbsadler 15345 Apr 22 01:26 ggdb
-rwxr-xr-x 1 gbsadler gbsadler 14261 Apr 22 01:26 gstabs
-rwxr-xr-x 1 gbsadler gbsadler 17773 Apr 22 01:26 gstabs_p
a.out is -g
dwarf2 is -gdwarf-2
ggdb is -ggdb
gstabs is -gstabs
gstabs_p is -gstabs+
So, apparently -g does use/produce a file with gstabs+. My question is,
why then does -ggdb not use gstabs+ for c++? Is -ggdb misdocumented?
Apparently -ggdb uses dwarf2... Is this 'correct'?
Same results with gcc (2.95.3) and test.c (test.cpp renamed).
Gordon Sadler
More information about the Gcc
mailing list