我在Linux tutnix 3.13.0-30-generic #54-Ubuntu i686 i686 GNU/Linux
上使用X-server。
在X-server上,我使用schroot来更改root,然后在其上运行我的应用程序。
现在的问题是我试图在X-server(比如远程机器)和gdbserver
(版本7.7)上在Ubuntu机器上运行gdb
(版本6.7.1)(本地机器或运行X-server的机器),但它无法正常工作。
这是我到目前为止所尝试的: -
在远程计算机上的命令下执行
在本地计算机上的命令下执行
现在在本地机器上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个。因此,我无法找到这些共享库中存在的符号。
我尝试使用symbol-file
上的gdb
命令从本地计算机上的库文件加载符号,但这会导致地址不匹配
所以我使用了以下命令
但它再次显示错误消息
Could not open 'remote:/usr/local/davis/lib/usr/lib/libqt.so.3' as an executable file: Function not implemented
任何人都可以告诉我这里我做错了什么?如果有替代解决方案来加载共享库中的符号,请建议。
P.S。两个MY_Application二进制文件都是相同的。
答案 0 :(得分:1)
最后,我找到了解决问题的方法。
问题出在上面显示的第2步中。不知何故,gdb没有将所有符号和PATH加载到共享库。虽然用ldd
命令显示的PATH是准确的。但如果我只是运行gdb ./MY_Application
,它仍然不适合我
所以我在此之后又执行了一个命令,即
file MY_Application
并且还复制了库文件
/srv/chroot/loc/usr/local/davis/lib/
到/usr/local/davis/lib/
之后,我将它连接到远程服务器,现在它正常工作。