This is the mail archive of the gdb@sources.redhat.com mailing list for the GDB project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: debug dynamically linked modules..


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






Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]