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
无法加载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/
之后,我将它连接到远程服务器,现在它工作正常