我在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主机端做了错误的事情。 我的具体问题是:
gdb的Cygwin版本足以debugging远程Linux进程吗?还是我需要一个特殊的cross-gdb来在Windows上运行它并使用Linux进程? 如果是这样的话,我可以在哪里find这样的gdb吗?
使用gdb进行远程debugging要求在主机系统上提供符号。 什么是最简单的方法来实现呢? 我可以将Linux目标上的内部版本生成的符号复制到Windows主机,还是必须在Windows上完成完整版本? 有没有办法避免这个要求,以便我只能提供符号的目标?
谢谢,
-R
更多信息: RSE常见问答提供了一些指针,但不幸的是我仍然被封锁。 常见问题描述了两种方法:
我也在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代码。 看看这个指南。