From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 23720 invoked by alias); 18 Nov 2005 14:38:12 -0000 Received: (qmail 23711 invoked by uid 22791); 18 Nov 2005 14:38:09 -0000 Received: from trump.cadenux-support.com (HELO cadenux.com) (66.135.34.142) by sourceware.org (qpsmtpd/0.30-dev) with ESMTP; Fri, 18 Nov 2005 14:38:09 +0000 Received: from Sidney (unknown [200.91.139.154]) (using TLSv1 with cipher RC4-MD5 (128/128 bits)) (No client certificate requested) by cadenux.com (Postfix) with ESMTP id C42A53A0456; Fri, 18 Nov 2005 17:51:32 +0000 (UTC) Subject: Re: gdb debugging threads help From: Teresa Rivas Reply-To: teresa.rivas@cadenux.com To: Daniel Jacobowitz Cc: gdb@sources.redhat.com In-Reply-To: <1132324238.32154.30.camel@localhost.localdomain> References: <1132274170.32154.20.camel@localhost.localdomain> <20051118023628.GA31581@nevyn.them.org> <1132324238.32154.30.camel@localhost.localdomain> Content-Type: text/plain Date: Fri, 18 Nov 2005 14:38:00 -0000 Message-Id: <1132324709.32154.34.camel@localhost.localdomain> Mime-Version: 1.0 Content-Transfer-Encoding: 7bit Mailing-List: contact gdb-help@sourceware.org; run by ezmlm Precedence: bulk List-Subscribe: List-Archive: List-Post: List-Help: , Sender: gdb-owner@sourceware.org X-SW-Source: 2005-11/txt/msg00384.txt.bz2 Also I tried a c in the gdb and I get this errors: (gdb) c Continuing. Error while mapping shared library sections: /lib/libc.so.0: No such file or directory. Error while mapping shared library sections: /lib/libpthread.so.0: No such file or directory. Error while mapping shared library sections: /lib/ld-uClibc.so.0: No such file or directory. Error while reading shared library symbols: /lib/libc.so.0: No such file or directory. Error while reading shared library symbols: /lib/ld-uClibc.so.0: No such file or directory. Program exited normally. (gdb) quit so even when this libraries are in the target file system I am debugging remote from my host so on my host these libraries do not exist under /lib instead they are under target/fs/lib. > > > 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