Удаленная отладка процесса Linux из Windows с помощью gdb и gdbserver: что именно нужно на стороне Windows?

Я использую 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. Мои конкретные вопросы:

  • Достаточно ли версии Cygwin gdb для отладки удаленных процессов Linux, или мне нужен специальный cross-gdb для запуска его в Windows и для работы с процессами Linux? Если да, можно ли где-нибудь достать такой gdb?

  • Для удаленной отладки с помощью gdb необходимо, чтобы символы были доступны в хост-системе. Какой самый простой способ добиться этого? Могу ли я просто скопировать символы, созданные при сборке на цели Linux, на хост Windows, или мне нужна полная сборка для Windows? Есть ли способ избежать этого требования, чтобы я мог поставить символы только на цель?

Спасибо,

-R


Подробнее: В FAQ по RSE есть несколько указателей, но, к сожалению, я все еще заблокирован. В FAQ описаны два подхода:

  • Запустить клиент gdb в удаленной системе через ssh. Проблема здесь в том, что некоторые поля в модуле запуска отладки CDT связаны с локальной системой (путь проекта, путь к исполняемому файлу и т. Д.).
  • Постройте / получите версию gdb для перекрестной отладки, которая поддерживает отладку процессов Linux из Windows. Проблема здесь в том, что мало информации о том, как этого добиться.

Я также поднял этот вопрос на форуме CDT .

16
задан rewbs 17 August 2010 в 15:08
поделиться