C GDB:附加属于共享库的源文件

C GDB:附加属于共享库的源文件,c,debugging,gdb,C,Debugging,Gdb,全部, 我在主机上运行GDB remotelyclient,在目标上运行gdbserver。我想在共享库中设置断点。共享库位于我运行GDB的路径的本地。我看到调试器正在设置断点: 此时未加载共享库。 gdb openapiClientRegister 0x100211d4处的断点1 gdb c 继续 Do you need "set solib-search-path" or "set sysroot"? Breakpoint 1, 0x100211d4 in openapiClientReg

全部,

我在主机上运行GDB remotelyclient,在目标上运行gdbserver。我想在共享库中设置断点。共享库位于我运行GDB的路径的本地。我看到调试器正在设置断点:

此时未加载共享库。 gdb openapiClientRegister 0x100211d4处的断点1 gdb c 继续

Do you need "set solib-search-path" or "set sysroot"?

Breakpoint 1, 0x100211d4 in openapiClientRegister@plt ()
(gdb) info shared
From        To          Syms Read   Shared Object Library
                        No          linux-vdso32.so.1
                        No          /mnt/application/libproc_libs.so
                        No          **/mnt/application/libopenclt.so**
0x0ff46260  0x0ff51b54  Yes (*)     /lib/libpthread.so.0
0x0ff1a8ac  0x0ff1ec70  Yes (*)     /lib/librt.so.1
0x0fef5aa8  0x0fef6adc  Yes (*)     /lib/libdl.so.2
0x0fd90df4  0x0fe8b064  Yes (*)     /lib/libc.so.6
                        No          /lib/ld.so.1
(*): Shared library is missing debugging information.
我可以看到库中有以粗体显示的调试信息。程序运行时,会命中断点。但是GDB无法单步执行代码,因为它找不到包含代码的文件。我尝试通过directory命令添加包含该文件的源目录,但仍然没有成功

你能指出我的程序中可能出现的错误吗?我可能会错过什么


提前感谢。

编译代码调试符号,如gcc-g-g选项,将在编译文件中包含调试信息。然后它将向您显示符号。

我进一步发现,问题在于GDB根本没有读取符号,这从上述帖子中共享的信息输出中可以明显看出。我忽略了这一点。我目前正在研究为什么GDB在共享库中没有加载符号