Strange backtrace from GDB 7.5.91
Eli Zaretskii
eliz@gnu.org
Wed Mar 20 17:45:00 GMT 2013
I saw today a very strange backtrace, while debugging with GDB 7.5.91,
which I got by stepping through relocate_gdb_directory:
(top-gdb) s
relocate_path (flag=1, initial=0x71a51b "d:/usr/share/gdb",
progname=0x260ed0 "d:\\usr\\eli\\utils\\gdb-7.5.91\\gdb\\gdb.exe")
at main.c:124
124 dir = relocate_path (gdb_program_name, initial, flag);
(top-gdb) bt
#0 relocate_path (flag=1, initial=0x71a51b "d:/usr/share/gdb",
progname=0x260ed0 "d:\\usr\\eli\\utils\\gdb-7.5.91\\gdb\\gdb.exe")
at main.c:124
#1 relocate_gdb_directory (
initial=initial@entry=0x71a51b "d:/usr/share/gdb", flag=flag@entry=1)
at main.c:124
#2 0x004f0b1d in captured_main (data=data@entry=0x572ff10) at main.c:399
But relocate_path's argument list is this:
relocate_path (const char *progname, const char *initial, int flag)
i.e., the FLAG argument is the last one, not the first one.
After one more "step", relocate_path appears twice in the backtrace,
once with correct order of arguments, the other one with an incorrect
order:
(top-gdb) s
relocate_path (initial=0x71a51b "d:/usr/share/gdb",
progname=0x260ed0 "d:\\usr\\eli\\utils\\gdb-7.5.91\\gdb\\gdb.exe",
flag=<optimized out>) at main.c:109
109 return make_relative_prefix (progname, BINDIR, initial);
(top-gdb) bt
#0 relocate_path (initial=0x71a51b "d:/usr/share/gdb",
progname=0x260ed0 "d:\\usr\\eli\\utils\\gdb-7.5.91\\gdb\\gdb.exe",
flag=<optimized out>) at main.c:109
#1 relocate_path (flag=1, initial=0x71a51b "d:/usr/share/gdb",
progname=0x260ed0 "d:\\usr\\eli\\utils\\gdb-7.5.91\\gdb\\gdb.exe")
at main.c:120
#2 relocate_gdb_directory (
initial=initial@entry=0x71a51b "d:/usr/share/gdb", flag=flag@entry=1)
at main.c:124
#3 0x004f0b1d in captured_main (data=data@entry=0x572ff10) at main.c:399
Is this due to inlining or something? Is this a bug?
The compiler was GCC 4.7.2, if that matters, and the compilation
switches were "-g3 -O2". MinGW GCC produced DWARF-2 debug info.
More information about the Gdb
mailing list