From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 23922 invoked by alias); 17 Oct 2003 07:11:09 -0000 Mailing-List: contact gdb-help@sources.redhat.com; run by ezmlm Precedence: bulk List-Subscribe: List-Archive: List-Post: List-Help: , Sender: gdb-owner@sources.redhat.com Received: (qmail 23915 invoked from network); 17 Oct 2003 07:11:05 -0000 Received: from unknown (HELO intel3.iskrasistemi.si) (213.250.33.98) by sources.redhat.com with SMTP; 17 Oct 2003 07:11:05 -0000 Received: from siol.net (zv-23.sysen.iskrasistemi.si [10.0.30.23]) by intel3.iskrasistemi.si (8.11.1/8.11.1) with ESMTP id h9H7AM064137; Fri, 17 Oct 2003 09:10:22 +0200 (CEST) (envelope-from I@siol.net) Message-ID: <3F8F95C6.7010304@siol.net> Date: Fri, 17 Oct 2003 07:11:00 -0000 From: Izo Organization: SYSEN d.d. User-Agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.4) Gecko/20030624 Netscape/7.1 X-Accept-Language: sl, en-us MIME-Version: 1.0 To: Jack J CC: gdb@sources.redhat.com Subject: Re: debug dynamically linked modules.. References: <20031016193935.98962.qmail@web20507.mail.yahoo.com> In-Reply-To: <20031016193935.98962.qmail@web20507.mail.yahoo.com> Content-Type: text/plain; charset=us-ascii; format=flowed Content-Transfer-Encoding: 7bit X-SW-Source: 2003-10/txt/msg00214.txt.bz2 There is the difference between the dll loaded at programs start or loaded in runtime via dlopen. 1. SO loaded at start set the 1st breakpoint somewhere at the start into the main program, e.g. the first line after the main (... ) then open the source you want to debug and reset the breakpoint there voila - if you use the gcc-2.95.3 the chances are good that the program stops where desired; if you use gcc-3.x/gdb-5.2.x you should compile with the -g -g3 -O0 -ggdb (I am using -gstabs+ too since the stabs assembly source is more readable than dwarf) and chances are somewhere 50/50 to program being stopped at right place ... 2. SO loaded at runtime with dlopen Run the program. Lead it over the point where the SO in question is loaded. If you have access to the source code, I suggest to put a sleep() at some point that the program would not run away. GDB attach to the process. Only then the symbols from SO are loaded. Pretty shitty, isn't it ? Maybe Daniel can explain why so ! I am the first that wants to know why the GDB can not load the symbols in run time, t.i. - when SO is loaded - I have tried to dlopen with all three options possible - without single difference in behaviour. :-( Izo Jack J wrote: >Hi, > >I would like to know how to debug using gdb >(set breakpoint on routine, etc.) a dynmically linked, >relocated code. > >The platform is RH Linux 9.0. There is some >application >module compiled with -fPIC and -shared, and >-export-dynamic options. >A global structure containing functions is exported by >the DLL module. >The problem: I would like to set breakpoint on one >of the (file static) functions contained in this >structure. > >>>From mainline code after call to dlsym(..) (to the >global structure), I try to set break point, and I >get error: "Function xxx not defined.". > >I do 'info shared' on gdb and do see the file being >loaded. Also I do see that "-g" option to add >debug symbols in gcc. > >Is there anything I am missing ? How does one >normally use gdb in such scenario ? > >Any tips, pointers/hints is appreciated. > >Thanks, > > >__________________________________ >Do you Yahoo!? >The New Yahoo! Shopping - with improved product search >http://shopping.yahoo.com > > > >