pie*_*fou 14 debugging gdb breakpoints shared-libraries
我有一个共享库libtest.so,将使用它加载到主程序中dlopen.函数test()驻留在libtest.so主程序中并将在其中调用dlsym.有什么方法可以设置一个断点test吗?
请注意,libtest.so在链接时间内主程序尚未链接.否则,我应该能够设置断点,尽管它是一个待处理的动作.就我而言,当我这样做时b test,gdb会告诉我Function "test" not defined.
dic*_*ciu 14
实际上gdb应该告诉你,当加载新的库时,它能够在将来解析符号:
(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
Run Code Online (Sandbox Code Playgroud)
稍后在加载.so对象后,它将解析断点,例如:
Reading symbols for shared libraries . done
Breakpoint 1 at 0xcafebebe
Pending breakpoint 1 - "test" resolved
Run Code Online (Sandbox Code Playgroud)
实际上,这种方法并不总是有效.
假设我有几个共享库,每个库都有一个名为"Init"的函数.如果我加载了不同的库,那么"b Init"将断点设置为函数"Init"的错误实例.所以我必须像这样指定断点:
(gdb)b object5.c:66
没有名为object5.c的源文件.
| 归档时间: |
|
| 查看次数: |
33203 次 |
| 最近记录: |