Я запускаю Eclipse CDT в Windows для разработки кода C, который построен и протестирован на удаленных Linux-системах. В настоящее время код никогда не компилируется в Windows.
Я могу использовать CDT для запуска удаленного процесса на целевой Linux под gdbserver, а затем присоединить gdb от хоста Windows. Однако 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. Мои конкретные вопросы:
-
Является ли версия ggb для Cygwin достаточной для отладки удаленных процессов Linux или мне нужен специальный cross-gdb, чтобы запустить его в Windows и работать с процессами Linux? Если да, то где-нибудь я могу получить такой gdb?
-
Удаленная отладка с помощью gdb требует наличия символов в хост-системе. Каков самый простой способ достичь этого? Могу ли я просто скопировать символы, созданные сборкой на целевой Linux-платформе, на хост Windows, или вам нужно получить полную сборку в Windows? Есть ли способ избежать этого требования, чтобы я мог предоставлять символы только на цель?
Спасибо,
-R
Дополнительная информация: RSE FAQ содержит некоторые указатели, но, к сожалению, я все еще заблокирован. FAQ описывает два подхода:
- Запустите клиент gdb в удаленной системе поверх ssh. Проблема здесь в том, что определенные поля в пусковой установке отладки CDT привязаны к локальной системе (путь к проекту, исполняемый путь и т.д.).
- Создайте/получите кросс-отладочную версию gdb, которая поддерживает отладку процессов Linux из Windows. Проблема здесь в том, что мало информации о том, как достичь этого.
Я также поднял эту проблему на форуме CDT.