8

我正在尝试使用 gdbserver...
我有一个/user/bin/foo使用 pid 运行的二进制路径的应用程序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 ?? ()

此外,它显示的当前线程信息不正确。像 info threads 显示 1 thread ,但我的应用程序有 10 个线程 -

(gdb) info threads
* 1 Thread 19767.19767  0x00007f207550043c in ?? ()

如何让 gdb 从远程文件加载符号/user/bin/foo?如何让它显示正确的信息?

4

2 回答 2

4

如何让 gdb 从远程文件 /user/bin/foo 加载符号

你不能。在本地复制远程/usr/bin/foo(或挂载它所在的文件系统),然后像这样调用 gdb: gdb /path/to/copy/of/foo,或者只使用file命令。

于 2013-03-21T19:47:24.313 回答
4

从 gdb 7.10 开始,您可以使用

set sysroot target:

使 gdb 从远程文件系统中检索文件。请参阅https://sourceware.org/gdb/onlinedocs/gdb/Files.html#Files

于 2017-02-15T05:14:26.590 回答