Как заставить Eclipse дать GDB Cygwin posix-путь к исполняемому файлу? - PullRequest
9 голосов
/ 12 февраля 2009

Я использую Eclipse в Windows для программирования C ++ с помощью набора инструментов Cygwin. Я хотел бы также использовать его для отладки, но моя проблема заключается в следующем:

  • Исполняемый файл для отладки находится в подпапке рабочей области (я полагаю, довольно стандартной), но не самого проекта, из которого построен исполняемый файл.
  • Eclipse и GDB имеют разные форматы путей: Eclipse работает с путями Windows, тогда как GDB работает с путями posix. Eclipse знает D:\Path\To\Exe, тогда как GDB нужно /cygdrive/d/Path/To/Exe.
  • Eclipse настаивает , что он может найти исполняемый файл для отладки, когда я ввожу путь в диалоговом окне «Отладка конфигураций ...». Кнопка «Отладка» отключена, пока путь не будет правильным.
  • Eclipse, похоже, не принимает ${workspace_loc} в этом конкретном поле ввода.

Есть ли какая-то скрытая опция, о которой я не знаю? Была ли у вас проблема раньше?

Что я пробовал до сих пор

  • Заставить Eclipse передать путь, который я ввел, в GDB --- не сработало.
  • Работа с путями поиска исходного кода и сопоставлениями путей --- не работает , это действительно только для исходных файлов.
  • Создание проекта C ++ для выходной папки, в которой находится исполняемый файл, поэтому у меня может быть относительный путь к exe-файлу внутри проекта --- не работает.

Вещи, которые я все еще мог бы попробовать

  • Используйте файл .gdbinit, чтобы отбросить путь, заданный Eclipse, и загрузить реальный исполняемый файл с путями posix - попробовал это, но не очень сложно.
  • Укажите оболочку в качестве аргумента для GDB --- загрязняет корень моего рабочего пространства.
  • Предоставьте свой собственный плагин для работы с делом - добавляет еще один фрагмент кода для поддержки на другом языке.

Ответы [ 3 ]

13 голосов
/ 24 февраля 2009

В Eclipse в Предпочтения-> C / C ++ -> Отладка -> «Общий путь поиска источника» добавьте новое отображение пути. В качестве пути компиляции вы должны использовать Unix-подобный путь (например, / cygdrive / c), в качестве локального системного пути вы должны использовать Windows-подобный путь (например, c:).

1 голос
/ 24 февраля 2009

Cygwin поставляется с программой под названием cygpath для перевода путей из windows в unix и наоборот, например,

$ cygpath -u 'c:\Users\Andrew\Documents\svn'
/cygdrive/c/Users/Andrew/Documents/svn

сделать cygpath --help для получения дополнительной информации.

Таким образом, вы, вероятно, захотите написать оболочку для GDB, которая преобразует любые специфичные для окон пути в unix-пути, а затем вызывает реальную GDB.

0 голосов
/ 31 октября 2009

Проблема исчезла при обновлении до Eclipse Ganymede.

...