Debugging with GDB Manual The GNU Source-Level Debugger (769148-001, March 2014)

For example, if you have more than one shared library with the same name but different path
names, you may want to use GDB_SHLIB_ROOT because GDB searches for libraries based on
the full path name.
Note that GDB_SHLIB_PATH may not give you the results you expect because GDB searches for
libraries that match only the name, regardless of the path, and always accepts the first library that
matches the name.
For example, if you want to use /tmp/usr/lib/libsubs.sl and /tmp/usr/share/lib/
libsubs.sl, you can set GDB_SHLIB_ROOT' to /tmp. Now whenever GDB encounters a library
with the name /usr/lib/libsubs.sl and /usr/share/lib/libsubs.sl, GDB looks at
/tmp/usr/lib/libsubs.sl and /tmp/usr/share/lib/libsubs.sl respectively.
Errors reading symbol files
While reading a symbol file, GDB occasionally encounters problems, such as symbol types it does
not recognize, or known bugs in compiler output. By default, GDB does not notify you of such
problems, since they are relatively common and primarily of interest to people debugging compilers.
If you are interested in seeing information about ill-constructed symbol tables, you can either ask
GDB to print only one message about each such type of problem, no matter how many times the
problem occurs; or you can ask GDB to print more messages, to see how many times the problems
occur, with the set complaints command (see“Optional warnings and messages” (page 218)).
The messages currently printed, and their meanings, include:
inner block not inside outer block in
symbol
The symbol information shows where symbol scopes begin
and end (such as at the start of a function or a block of
statements). This error indicates that an inner scope block
is not fully contained in its outer scope blocks.
GDB circumvents the problem by treating the inner block as
if it had the same scope as the outer block. In the error
message, symbol may be shown as "(don't know)" if
the outer block is not a function.
block at address out of order The symbol information for symbol scope blocks should
occur in order of in- creasing addresses. This error indicates
that it does not do so.
GDB does not circumvent this problem, and has trouble
locating symbols in the source file whose symbols it is
reading. (You can often determine what source file is
affected by specifying set verbose on. See “Optional
warnings and messages” (page 218).)
bad block start address patched The symbol information for a symbol scope block has a start
address smaller than the address of the preceding source
line. This is known to occur in the SunOS 4.1.1 (and earlier)
C compiler.
GDB circumvents the problem by treating the symbol scope
block as starting on the previous source line.
bad string table offset in symbol n Symbol number n contains a pointer into the string table
which is larger than the size of the string table.
GDB circumvents the problem by considering the symbol to
have the name foo, which may cause other problems if
many symbols end up with this name.
unknown symbol type 0xnn The symbol information contains new data types that GDB
does not yet know how to read. 0xnn is the symbol type of
the uncomprehended information, in hexadecimal.
92 GDB Files