From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 11055 invoked by alias); 27 Sep 2006 18:15:26 -0000 Received: (qmail 11047 invoked by uid 22791); 27 Sep 2006 18:15:25 -0000 X-Spam-Check-By: sourceware.org Received: from mx2.palmsource.com (HELO mx2.palmsource.com) (12.7.175.14) by sourceware.org (qpsmtpd/0.31) with ESMTP; Wed, 27 Sep 2006 18:15:23 +0000 Received: from localhost (localhost [127.0.0.1]) by localhost.domain.tld (Postfix) with ESMTP id 2475726E12; Wed, 27 Sep 2006 11:15:21 -0700 (PDT) Received: from mx2.palmsource.com ([127.0.0.1]) by localhost (mx2.palmsource.com [127.0.0.1]) (amavisd-new, port 10024) with LMTP id 18145-02-9; Wed, 27 Sep 2006 11:15:20 -0700 (PDT) Received: from ussunex01.palmsource.com (unknown [192.168.101.9]) by mx2.palmsource.com (Postfix) with ESMTP id 1BBB726E0E; Wed, 27 Sep 2006 11:15:20 -0700 (PDT) Received: from 192.168.92.59 ([192.168.92.59]) by ussunex01.palmsource.com ([192.168.101.9]) via Exchange Front-End Server owa.palmsource.com ([10.0.20.17]) with Microsoft Exchange Server HTTP-DAV ; Wed, 27 Sep 2006 18:15:20 +0000 Received: from svmsnyderlnx by owa.palmsource.com; 27 Sep 2006 11:15:19 -0700 Subject: Re: howto debug libthread_db From: Michael Snyder To: carmelo73@gmail.com Cc: gdb@sourceware.org In-Reply-To: <451A18E9.9070500@gmail.com> References: <45193401.7000502@gmail.com> <1159294840.24808.76.camel@localhost.localdomain> <451A18E9.9070500@gmail.com> Content-Type: text/plain Content-Transfer-Encoding: 7bit Date: Wed, 27 Sep 2006 18:15:00 -0000 Message-Id: <1159380919.9768.39.camel@localhost.localdomain> Mime-Version: 1.0 X-Mailer: Evolution 2.4.1 X-IsSubscribed: yes 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: 2006-09/txt/msg00166.txt.bz2 On Wed, 2006-09-27 at 08:23 +0200, Carmelo Amoroso wrote: > Michael Snyder wrote: > > On Tue, 2006-09-26 at 16:06 +0200, Carmelo Amoroso wrote: > >> Hi All, > >> I'm trying to debug a simple multithread application on a remote target, > >> and I like to debug the libthread_db itself... is it possible to do it? > >> is it possible to set some breakpoints and stepping through? > >> Is there anyone already played with it? > >> > >> I tried to use symbol-file to gdb client, and I successfully added a > >> breakpoint, but I cannot reach it after I connected to the target and > >> issued 'continue'. > >> > >> Any help will be appreciated > > > > Interesting. I haven't done it (or not much anyway). > > > > The first thing you must bear in mind is that libthread_db is not > > part of the target application -- it is part of gdb (or in the > > remote debugging context, part of gdbserver). So to debug it, > > you must debug gdb, or in your case gdbserver. > > > Yes. it's what I want to do > > It might be easier if you try this out first using a native gdb, > > debugging itself. > > > > When you debug gdb with gdb, it is easier if you change the prompt. > > I usually do this in the 'parent' gdb, so I can tell it apart from > > the 'child' gdb: > > > > (gdb) set prompt (GDB) > > (GDB) > > > > Now, in the parent GDB, you should be able to set your > > breakpoints in libthread_db, then start the child gdb, > > load the multi-threaded program, and begin debugging it. > > > Does the native gdb use the thread_db as the gdbserver does? Yes. > I was thinking to run gdb --args my-gdbserver > on the target, and connect to the my-gdbserver from the host > just to trigger the thread_db initialization process. > Comments? Oh, so you can actually run gdb on the target? Yes, that would make things simpler, and what you suggest above is pretty much what I would recommend. > > When you get ready to try this with gdbserver, you will > > have to start one gdbserver and attach to it with another > > gdbserver. Then you'll again have two gdbs running on the > > host side, which you can again think of as parent and child, > > only now the parent is debugging the child's gdbserver, not > > the child gdb itself. > > > > Well, just before reading your reply, I tried with this: > > target: > gdbserver localhost:999 my-gdbserver localhost:998 > > host: > xxx-gdb my-gdbserver (connecting to port 999) > > xxx-gdb application (connecting to port 998) > > With the first gdb session I was able to set a breakpoint into > thread_db, but not able to stepping through the code. > > Is this approach as well as the gdb native session. Hmmm, that's pretty much what I would have tried. What happened when you tried to step? How did it fail?