使用gdb和gdbserver从Windows远程debuggingLinux进程:Windows端需要什么?

我在Windows上运行Eclipse CDT来开发在远程Linux系统上构build和testing的C代码。 目前,该代码从未在Windows上编译。

我可以使用CDT在gdbserver下的Linux目标上开始远程进程,然后从Windows主机连接gdb。 但是,gdb立即失败,错误如下:

warning: A handler for the OS ABI "GNU/Linux" is not built into this configuration of GDB. Attempting to continue with the default i386 settings. [...] Remote 'g' packet reply is too long: 74afe9bff0aee9bf02000000f4af4a00a0aee9bf[...] 

两个Linux系统之间的debugging工作正常,所以很明显,我在Windows主机端做了错误的事情。 我的具体问题是:

谢谢,

-R


更多信息: RSE常见问答提供了一些指针,但不幸的是我仍然被封锁。 常见问题描述了两种方法:

  • 通过SSH启动远程系统上的gdb客户端。 这里的问题是CDTdebugging启动器中的某些字段绑定到本地系统(项目path,可执行path等)。
  • 构build/获取支持从WindowsdebuggingLinux进程的gdb的交叉debugging版本。 这里的问题是,有关如何实现这一点的信息很less。

我也在CDT论坛上提出过这个问题 。

使用gcc / gdb设置交叉编译或交叉调试环境是一个非常困难的问题,它几乎不是最有效的解决方案。 把一个Linux虚拟机放在你的Windows机器上,并在那里调试,将会少得多。 如果你真的需要调试那边的话,我建议你使用命令行gdb。 如果你不能在那里获得源代码,那么在你的控制下从一个linux虚拟机进行远程调试是可行的。

现在有一个插件http://marketplace.eclipse.org/content/direct-remote-c-debugging

它允许你在服务器上通过ssh远程启动gdb。 它需要关心路径映射和其他事情。

您不需要远程运行gdb服务器

Visual Studio Community Edition 2017提供了GDB交叉编译和调试工具。 将它与Linux服务器或Windows Linux子系统连接起来,就可以可靠地为Linux系统开发C代码。 看看这个指南。