I have a shared library libtest.so
which will be loaded into the the main program using dlopen
. Function test()
reside in libtest.so
and will be called in the main program through dlsym
. Is there any way I could set up a break point on test
?
Please note that the main programm has not been linked to libtest.so
during linking time. Otherwise , I should be able to set the break point although it is a pending action. In my case, when I do b test
, gdb will tell me Function "test" not defined
.
You can also set breakpoints on function names. To do this, just type "break [functionname]". gdb will stop your program just before that function is called. Breakpoints stay set when your program ends, so you do not have to reset them unless you quit gdb and restart it.
To set a breakpoint in source code: Click in the far left margin next to a line of code. You can also select the line and press F9, select Debug > Toggle Breakpoint, or right-click and select Breakpoint > Insert breakpoint. The breakpoint appears as a red dot in the left margin.
Breakpoints are set with the break command (abbreviated b ). The debugger convenience variable `$bpnum' records the number of the breakpoint you've set most recently; see section Convenience variables, for a discussion of what you can do with convenience variables.
Press F3 and then press F9 to add a breakpoint.
Actually gdb should tell you that it's able to resolve the symbol in the future, when new libraries are loaded:
(gdb) b test
Function "test" not defined.
Make breakpoint pending on future shared library load? (y or [n]) y
Breakpoint 1 (test) pending.
(gdb) r
And later on once the .so object is loaded, it will resolve the breakpoint, e.g.:
Reading symbols for shared libraries . done
Breakpoint 1 at 0xcafebebe
Pending breakpoint 1 - "test" resolved
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With