St.*_*rio 3 linux networking remote
我目前遇到了我的应用程序的远程调试问题gdb
。我希望能够附加到远程进程并使用 的IDE
可视化调试(我使用Visual Studio Code
)。
问题是 IDE 可以通过其附加到本地进程,pid
但这并不是很有用。因此,如果我请求本地端口转发,我可以使用本地端口转发连接,这又不是我真正想要的。
是否可以执行“pid-forwarding”之类的操作,即我设置了一些pid
实际上是远程进程的操作。
正如比利叔叔所说,一个很好的方法是使用 GDB\xe2\x80\x99s 远程调试功能。这是通过在运行要调试的进程的主机上运行 \xe2\x80\x9csmall\xe2\x80\x9d 调试器,并gdb
从运行开发环境的主机连接到它来实现的。由于许多 IDE(包括 VS Code)支持使用 进行调试gdb
,因此您可以舒适地使用针对在任何地方(包括其他平台)上运行的进程的开发环境。
在运行要调试的进程的主机上,您需要安装gdbserver
(通常通过复制静态二进制文件)并运行它;例如:
gdbserver --attach :9953 ${pid}\n
Run Code Online (Sandbox Code Playgroud)\n\n将在端口 9953 上列出并附加到给定的进程 ID。您可以指定多种方式连接到服务器(串行端口、IP 地址...),并运行命令进行调试,或附加到正在运行的进程,甚至运行 \xe2\x80\x9c 调试服务器\ xe2\x80\x9d 无具体进程。
\n\n在具有开发环境的主机上,您可以连接到以下位置的目标gdb
:
$ gdb ...\n\n(gdb) target remote <IP address>:9953\n
Run Code Online (Sandbox Code Playgroud)\n\n其他一切都照常进行。gdb
将从远程目标传输所需的文件(库等),但为了加快速度,您可以将其指向文件的本地副本。它将使用本地资源。
当两个主机相同时,它的工作原理与您\xe2\x80\x99d所期望的一样,但它也可以与不同的主机一起工作,例如从Linux系统调试Windows程序,或者更典型的是,在Linux系统上运行的程序来自更大开发平台的小型嵌入式系统。
\n