• 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 crossdev eeepc electronics emacs firefox foss git it j2ee jabber java latex life linux linux mint luakit maps medit mingw net programming qlandkarte qt qt4 qtcreator site soft unix vl-lug xfce безопасность графика железо ит наука радио сайт страйкбол туризм фото электроника яхты


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

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

  • Друзья


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