我正在尝试使用gdbserver ...
我有一个使用pid /user/bin/foo
运行的二进制路径19767
的应用程序。
在远程启动gdbserver:
gdbserver --remote-debug --multi 0:12347
在客户端上启动gdb并将其连接到删除服务器
target extended-remote 192.168.1.84:12347
在pid上附加了gdb
attach 19767
它显示:
warning: Could not load vsyscall page because no executable was specified
try using the "file" command first.
0x00007f207550043c in ?? ()
此外,它显示的当前线程信息不正确。像信息线程显示1个线程,但我的应用程序有10个线程 -
(gdb) info threads
* 1 Thread 19767.19767 0x00007f207550043c in ?? ()
如何让gdb从远程文件/user/bin/foo
加载符号?如何让它显示正确的信息?
答案 0 :(得分:4)
如何让gdb从远程文件/ user / bin / foo
加载符号
你做不到。在本地复制远程/usr/bin/foo
(或挂载它所在的文件系统),然后像这样调用gdb:gdb /path/to/copy/of/foo
,或者只使用file
命令。
答案 1 :(得分:1)
从gdb 7.10开始,您可以使用
set sysroot target:
使gdb从远程文件系统中检索文件。见https://sourceware.org/gdb/onlinedocs/gdb/Files.html#Files