Mirror of the gdb mailing list
 help / color / mirror / Atom feed
From: Izo <I@siol.net>
To: Jack J <get_info101@yahoo.com>
Cc: gdb@sources.redhat.com
Subject: Re: debug dynamically linked modules..
Date: Fri, 17 Oct 2003 07:11:00 -0000	[thread overview]
Message-ID: <3F8F95C6.7010304@siol.net> (raw)
In-Reply-To: <20031016193935.98962.qmail@web20507.mail.yahoo.com>

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
>
>
>  
>


      parent reply	other threads:[~2003-10-17  7:11 UTC|newest]

Thread overview: 5+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2003-10-16 19:39 Jack J
2003-10-16 19:44 ` Daniel Jacobowitz
2003-10-16 20:24 ` Jesse Marlin
2003-10-17  0:11   ` Jack J
2003-10-17  7:11 ` Izo [this message]

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=3F8F95C6.7010304@siol.net \
    --to=i@siol.net \
    --cc=gdb@sources.redhat.com \
    --cc=get_info101@yahoo.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox