This is the mail archive of the gdb@sourceware.org mailing list for the GDB project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: gdb debugging threads help


> > on the target:
> > # gdbserver :5234 simple
> 
> Is gdbserver linked to libthread_db?  Check the build log, or check the
> gdbserver binary.

I check the config.log and I have this errors when checking for the
thread_db library:

configure:1510: checking for libthread_db
configure:1531: gcc -o conftest -g -O2   conftest.c  -lthread_db 1>&5
configure:1596: gcc -o conftest -g -O2   -rdynamic conftest.c
-lthread_db 1>&5
/usr/lib/gcc/i486-linux-gnu/3.4.5/../../../../lib/libthread_db.so:
undefined reference to `ps_pdwrite'
/usr/lib/gcc/i486-linux-gnu/3.4.5/../../../../lib/libthread_db.so:
undefined reference to `ps_pglobal_lookup'
/usr/lib/gcc/i486-linux-gnu/3.4.5/../../../../lib/libthread_db.so:
undefined reference to `ps_lsetfpregs'
/usr/lib/gcc/i486-linux-gnu/3.4.5/../../../../lib/libthread_db.so:
undefined reference to `ps_getpid'
/usr/lib/gcc/i486-linux-gnu/3.4.5/../../../../lib/libthread_db.so:
undefined reference to `ps_lsetregs'
/usr/lib/gcc/i486-linux-gnu/3.4.5/../../../../lib/libthread_db.so:
undefined reference to `ps_pdread'
/usr/lib/gcc/i486-linux-gnu/3.4.5/../../../../lib/libthread_db.so:
undefined reference to `ps_lgetfpregs'
/usr/lib/gcc/i486-linux-gnu/3.4.5/../../../../lib/libthread_db.so:
undefined reference to `ps_lgetregs'
collect2: ld returned 1 exit status
configure: failed program was:
#line 1589 "configure"
#include "confdefs.h"


I see that is wrong that looks for the thread_db library in my host
libs, it should look in the target libs, so I add the param
--libdir=/target/libs to the configure and now the config.log doesn't
say any error about thread_db library and I can compile gdbserver fine.

Which command can I use to see if it is linked against the correct
thread_db library?? I use a nm -D gdbserver but all I see are the
symbols from the dynamic libraries not the libraries.

.....
0000eeec T target_signal_to_name
0000ee90 T target_signal_to_string
         U tcgetattr
         U tcsetattr
         U tcsetpgrp
         U td_symbol_list
         U td_ta_event_addr
         U td_ta_event_getmsg
         U td_ta_new
         U td_ta_set_event
         U td_ta_thr_iter
         U td_thr_event_enable
         U td_thr_get_info
0001f42c D the_low_target
00020784 B the_target
00014664 T thread_db_init
00020690 B thread_from_wait
......

Now I get a different error from gdb:

on the target:

# gdbserver :5234 simple
Process simple created; pid = 41
Listening on port 5234


on the host:

GNU gdb 6.3
Copyright 2004 Free Software Foundation, Inc.
GDB is free software, covered by the GNU General Public License, and you
are
welcome to change it and/or distribute copies of it under certain
conditions.
Type "show copying" to see the conditions.
There is absolutely no warranty for GDB.  Type "show warranty" for
details.
This GDB was configured as "--host=i686-linux --target=arm-linux".
(gdb) set solib-absolute-prefix /lib
(gdb) file simple
Reading symbols
from /home/trivas/dm320-appro/fs/examples/threads/simple...done.
(gdb) target remote 192.168.200.199:5234
Remote debugging using 192.168.200.199:5234
0x40000c60 in ?? ()
warning: Unable to find dynamic linker breakpoint function.
GDB will be unable to debug shared library initializers
and track explicitly loaded dynamic code.
(gdb) info shared
No shared libraries loaded at this time.
(gdb)


> > (gdb) set solib-absolute-prefix /target/arm-linux/lib
> 
> That's probably not right.  The paths below solib-absolute-prefix
> should match the target filesystem.  So if solib-absolute-prefix
> is "/target/arm-linux", then the target /lib/ld-linux.so.2 should be in
> /target/arm-linux/lib/ld-linux.so.2.
> 
> > (gdb) set solib-search-path /target/arm-linux/lib
> 
> You should not need to set that.
> 
> > (gdb) dir /target/arm-linux/lib
> 
> Or this.
> 
> > Source directories searched: /target/arm-linux/lib:$cdir:$cwd
> > (gdb) set endian little
> > The target is assumed to be little endian
> 
> Or this.
> 
> > (gdb) handle SIG32 nostop noprint pass
> > Signal        Stop      Print   Pass to program Description
> > SIG32         No        No      Yes             Real-time event 32
> 
> Don't do that; it never helps.
> 
> > (gdb) add-symbol-file simple
> > add symbol table from file "simple" at
> > (y or n) y
> > Reading symbols
> > from /home/trivas/dm320-appro/fs/examples/threads/simple...done.
> 
> Don't do this either.  Use "file simple", and do it before issuing the
> "target remote" command.
> 
> > and if I try a info shared it says "No shared libraries loaded at this
> > time"
> 
> Thread debugging will not work until this works.  It should show you
> the list of libraries and say that they have symbols loaded (at main,
> not when you first connect).
> 
-- 
Teresa R. Rivas
teresa.rivas@cadenux.com
Cadenux, LLC


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]