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