• Printable version
  • Export to OpenOffice
  • Export to PDF

// MinGW: кросс-отладка win32 приложений в Linux

По сути парочка дополнений для этой статьи: http://mingw-cross.sourceforge.net/cross_debug.html

Задача: есть win32 приложение, собранное путём кросс-компиляции при помощи cmake и mingw32, нужно запустить его в отладчике и поймать на чём оно падает.

Необходимый инстументарий:

  1. установленный mingw32
  2. wine (winconsole)
  3. бинарная версия gdb для windows, брать тут:
    http://sourceforge.net/projects/mingw/files/MinGW/Extension/gdb/
  4. версия gdb, собранная для Linux, знающая как подгружать win32 приложения, собранные mingw. Тут нужно искать сборку для вашего дистрибутива, для пользователей ArchLinux я сделал PKGBUILD и поместил его в AUR:
    https://aur.archlinux.org/packages.php?ID=54802
    продвинутые пользователи могут подглядывать в мои правила сборки и собирать самостоятельно :)

Бинарную версию нужно будет распаковать, например в ~/bin/mingw32-gdb-win32/. В директорию ~/bin/mingw32-gdb-win32/bin/ при этом следует сделать следующие симлинки:

cd ~/bin/mingw32-gdb-win32/bin/
ln -s /usr/i486-mingw32/bin/libexpat-1.dll .
ln -s /usr/i486-mingw32/bin/libiconv-2.dll .
ln -s /usr/i486-mingw32/bin/libintl-8.dll .

Всё. Впринципе всё готово для отладки.

  1. Запускаем сервер:
    wineconsole cmd /K ~/bin/mingw32-gdb-win32/bin/gdbserver.exe localhost:6000 test-app.exe [аргументы для программы с которыми она должна запускаться]
  2. Запускаем клиент gdb:
    i486-mingw32-gdb test-app.exe
  3. В запущенной версии gdb выполняем следующую команду:
    (gdb) target remote localhost:6000

Ну и по сути всё, дальше делаем всё как при обычной отладке при помощи gdb, устанавливаем точки останова, смотрим данные, делаем бектрейсы и т.д. Единственная разница, что для запуска приложения нужно использовать не команду run, а команду continue, но собственно если забудете или перепутаете - отладчик вам подскажет.

Если программа что-то выбрасывает на консоль, вы увидете это в окне wineconsole.

Если захочется графической отладки, смотреть в сторону ddd и ссылку, что я давал в начале поста.

Комментарии


BB Transcript ID#: 10286706



Тематика


Теги

archlinux arduino blog bookmark boost c c++ c++11 cmake crossdev eeepc electronics emacs firefox fonts foss git it j2ee jabber java latex life linux linux mint maps medit mingw net programming qlandkarte qt qt4 qtcreator site soft unix vl-lug безопасность графика железо ит наука радио сайт страйкбол туризм фото электроника яхты


Последние комментарии

  • Alexander Drozdov on „Nvidia Optimus“ (6 месяц(ев) назад)
  • lifchicker on „Nvidia Optimus“ (6 месяц(ев) назад)
  • Alexander Drozdov on „FFMPEG: немного про time-base и PTS“ (10 месяц(ев) назад)
  • Alexander Drozdov on „Смайлы в Unicode“ (14 месяц(ев) назад)
  • aloneunix on „Смайлы в Unicode“ (14 месяц(ев) назад)

  • Друзья


    QR Code: URL of current page
    За исключением случаев, когда указано иное, содержимое этой вики предоставляется на условиях следующей лицензии: CC Attribution-Share Alike 3.0 Unported