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

GDB: Error while remotely loading shared libraries

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

在 X 服务器上,我使用 schroot 更改根目录,然后我 运行 我的应用程序就在上面。

现在的问题是我正在尝试 运行 gdbserver(版本 6.7.1)在 X 服务器(比如远程机器)和 gdb(版本 7.7)上Ubuntu 机器(本地机器或 X-server 运行ning 所在的机器),但它不工作。

这是我到目前为止尝试过的:-

  1. 在远程机器上执行以下命令

    • MY_Application &
    • gdbserver localhost:8888 --attach process_id
  2. 在本地机器上执行以下命令

    • gdb ./MY_Application
    • (gdb)远程目标:8888

现在在本地计算机上 gdb 显示此消息

Could not load shared library symbols for 20 libraries, e.g. /usr/lib/libqt.so.3. Use the "info sharedlibrary" command to see the complete listing. Do you need "set solib-search-path" or "set sysroot"?

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

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

所以我使用了下面的命令

但它再次显示错误消息

Could not open 'remote:/usr/local/davis/lib/usr/lib/libqt.so.3' as an executable file: Function not implemented

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

P.S。 MY_Application 二进制文件相同。

我终于找到了解决问题的方法。 问题出在上面显示的步骤 2 中。不知何故,gdb 没有将所有符号和 PATH 加载到共享库。尽管使用 ldd 命令显示的 PATH 是准确的。但是如果我只是 运行 gdb ./MY_Application 它仍然对我不起作用 所以我在这之后又执行了一个命令,即

file MY_Application

并且还从 /srv/chroot/loc/usr/local/davis/lib//usr/local/davis/lib/ 之后我将它连接到远程服务器,现在它工作正常。