我在 Windows 上运行 Eclipse CDT 来开发在远程 Linux 系统上构建和测试的 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 系统之间的调试工作正常,所以很明显我在 Windows 主机端做错了什么。我的具体问题是:
Cygwin 版本的 gdb 是否足以调试远程 Linux 进程,还是我需要一个特殊的跨 gdb 才能在 Windows 上运行它并使用 Linux 进程?如果是这样,我可以在任何地方获得这样的 gdb 吗?
使用 gdb 进行远程调试要求主机系统上有可用的符号。实现这一目标的最简单方法是什么?我可以将 Linux 目标上构建生成的符号复制到 Windows 主机,还是必须在 Windows 上进行完整构建?有没有办法避免这个要求,这样我只能在目标上提供符号?
谢谢,
-R
更多信息: RSE常见问题解答提供了一些指示,但不幸的是我仍然被阻止。常见问题解答描述了两种方法:
- 通过 ssh 在远程系统上启动 gdb 客户端。这里的问题是 CDT 调试启动器中的某些字段与本地系统相关联(项目路径、可执行路径等)。
- 构建/获取支持从 Windows 调试 Linux 进程的 gdb 的交叉调试版本。这里的问题是关于如何实现这一点的信息很少。
我也在CDT 论坛上提出了这个问题。