Differences between revisions 8 and 9
Revision 8 as of 2009-08-05 04:40:13
Size: 3232
Editor: brobecke
Comment: spelling fix.
Revision 9 as of 2009-08-09 14:00:33
Size: 3487
Editor: bd042e10
Comment: Add question about -Werror in GDB 6.8.
Deletions are marked like this. Additions are marked like this.
Line 33: Line 33:
 1. ''' GDB 6.8 doesn't compile with GCC x.y because of -Werror, what should I do?'''

 . GDB 6.8 was released with -Werror configured in by default. You can disable it by configuring with:

$ /path/to/gdb-6.8/configure --disable-werror
  1. How do I disable the Type <return> to continue, or q <return> to quit pagination prompt in GDB?

    • Either with set height 0 or set pagination off

  2. GDB reports a nonsensical return value from an inferior function call. What's going on?

    • GDB doesn't know the return type nor the type of the arguments for that function call, because there's no debug information available for it. Either provide debuginfo for the program or library which contains the function, or cast the function to a function pointer of the appropriate signature.

      For example, to call fabs, which takes a double and returns a double, use:

      (gdb) print ((double (*) (double)) fabs) ( -1.25 )
  3. How do I load/unload a shared library in GDB?

    • GDB doesn't manipulate shared libraries. This is done by the operating system's dynamic linker. GDB just obtains the list of shared libraries from it, and works with that.
  4. How to show the current instruction when single-stepping instructions?

    • (gdb) display/i $pc
  5. GDB reports Cannot find user-level thread for LWP 23957: generic error, how do I fix this?

    • There are several common causes:
      • You have a mismatch between libthread_db.so.1 and libpthread.so.0 (this most often happens when you have multiple installations of glibc, or when you debug a program on remote target, and host and target have different glibc versions).

      • You are using 64-bit debugger to debug 32-bit program, and your kernel has a 32-bit ptrace emulation bug. FIXME: add reference to specific kernel fix.

      This has also been known to happen when one of DOSEMU's signal handlers is invoked from DPMI context, where the $gs register has a value different from what GDB and/or libthread_db.so.0 expect; SamuelBronosn found running the program under gdbserver to alleviate the problem, at least with version on i386.

  6. GDB does not see any threads besides the one in which crash occurred; or SIGTRAP kills my program when I set a breakpoint.

    • This frequently happen on Linux, especially on embedded targets. There are two common causes:
      • you are using glibc, and you have stripped libpthread.so.0

      • mismatch between libpthread.so.0 and libthread_db.so.1

      GDB itself does not know how to decode "thread control blocks" maintained by glibc and considered to be glibc private implementation detail. It uses libhread_db.so.1 (part of glibc) to help it do so. Therefore, libthread_db.so.1 and libpthread.so.0 must match in version and compilation flags. In addition, libthread_db.so.1 requires certain non-global symbols to be present in libpthread.so.0. Solution: use strip --strip-debug libpthread.so.0 instead of strip libpthread.so.0.

  7. GDB 6.8 doesn't compile with GCC x.y because of -Werror, what should I do?

  8. GDB 6.8 was released with -Werror configured in by default. You can disable it by configuring with:
    $ /path/to/gdb-6.8/configure --disable-werror
  9. Why doesn't anybody on the GDB IRC channel answer my question about my small distro's GDB, or my custom GDB?

  10. We can help with FSF's original GDB, and also with the GDBs shipped by the biggest distros. if you are lucky, somebody might know some peculiarities about some small distro's GDB.

None: FAQ (last edited 2021-01-05 22:29:23 by JonnyGrant)

All content (C) 2008 Free Software Foundation. For terms of use, redistribution, and modification, please see the WikiLicense page.