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