GDB:远程加载共享库时出错

GDB:远程加载共享库时出错,gdb,gdbserver,Gdb,Gdbserver,我在Linux tutnix 3.13.0-30-generic#54 Ubuntu i686 i686 GNU/Linux上使用X-server 在X-server上,我使用schroot来更改根目录,然后在其上运行我的应用程序 现在的问题是,我试图在X-server(比如说远程机器)上运行gdbserver(版本6.7.1),在Ubuntu机器(本地机器或运行X-server的机器)上运行gdb(版本7.7),但它不工作 这就是我迄今为止所尝试的:- 在远程计算机上执行以下命令 我的应用程

我在
Linux tutnix 3.13.0-30-generic#54 Ubuntu i686 i686 GNU/Linux
上使用X-server

在X-server上,我使用schroot来更改根目录,然后在其上运行我的应用程序

现在的问题是,我试图在X-server(比如说远程机器)上运行
gdbserver
(版本6.7.1),在Ubuntu机器(本地机器或运行X-server的机器)上运行
gdb
(版本7.7),但它不工作

这就是我迄今为止所尝试的:-

  • 在远程计算机上执行以下命令

    • 我的应用程序&
    • gdbserver localhost:8888--附加进程\u id
  • 在本地计算机上执行以下命令

    • gdb./MY_应用程序
    • (gdb)远程目标:8888
  • 现在,在本地计算机上,gdb正在显示此消息

    无法加载20个库的共享库符号,例如/usr/lib/libqt.so.3。
    使用“info sharedlibrary”命令查看完整的列表。
    您需要“设置solib搜索路径”还是“设置系统根”?

    据了解,gdb无法加载共享库,共有20个。因此,我无法找到这些共享库中存在的符号

    我试图使用
    gdb
    上的
    symbol file
    命令从本地计算机上的库文件加载符号,但这会导致地址不匹配

    所以我使用了下面的命令

    • (gdb)设置系统根远程:/
    但它再次显示错误消息

    无法将“remote:/usr/local/davis/lib/usr/lib/libqt.so.3”作为可执行文件打开:函数未实现

    谁能告诉我我做错了什么?如果有从共享库加载符号的替代解决方案,请建议


    另外,两个MY_应用程序二进制文件是相同的。

    最后我找到了解决问题的方法。 问题出现在上面显示的步骤2中。不知何故,gdb没有加载共享库的所有符号和路径。尽管使用
    ldd
    命令显示的路径是准确的。但如果我只是运行
    gdb./MY_应用程序
    所以我在这之后又执行了一个命令

    归档我的应用程序

    并从中复制了库文件
    /srv/chroot/loc/usr/local/davis/lib/
    /usr/local/davis/lib/
    之后,我将它连接到远程服务器,现在它工作正常