From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 20873 invoked by alias); 18 Nov 2005 14:30:22 -0000 Received: (qmail 20851 invoked by uid 22791); 18 Nov 2005 14:30:18 -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:30:18 +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 0D8563A0443; Fri, 18 Nov 2005 17:43:41 +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: <20051118023628.GA31581@nevyn.them.org> References: <1132274170.32154.20.camel@localhost.localdomain> <20051118023628.GA31581@nevyn.them.org> Content-Type: text/plain Date: Fri, 18 Nov 2005 14:30:00 -0000 Message-Id: <1132324238.32154.30.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/msg00383.txt.bz2 > > 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