gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-01 16:04:54 24 4
gpt4 key购买 nike

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

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

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

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

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

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

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

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

无法加载 20 个库的共享库符号,例如/usr/lib/libqt.so.3。
使用“info sharelibrary”命令查看完整列表。
您需要“set solib-search-path”还是“set sysroot”?

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

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

所以我使用了下面的命令

  • (gdb)设置 sysroot 远程:/

但它再次显示错误消息

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

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

附注两个 MY_Application 二进制文件是相同的。

最佳答案

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

文件 MY_Application

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

关于GDB:远程加载共享库时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38845093/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com