Как создать Google Breakpad на Windows с помощью Qt Creator (gcc / MinGW)? - PullRequest
1 голос
/ 28 ноября 2011

Дано: проект приложения, написанный для Qt Creator (4.7.4, только Win32, gcc / MinGW).

Требуется: подключите известную библиотеку Google Breakpad для сбора подробных дампов о сбоях от клиентов.

Мои текущие выводы таковы:

  • есть breakpad-Qt проект там, около двух лет.Он содержит поддерево исходных исходных кодов прерывания, которые должны быть собраны с помощью Qt Creator, поэтому я попытался создать рабочий пример, собрав его.
  • Сам по себе прерыватель зависит от DbgHelp.h из Windows SDK из-за использования Microsoftформат мини-дамп.
  • DbgHelp.h можно найти в заголовках Windows SDK, но он также включает некоторые заголовки из Visual Studio, которые, как сообщается, не могут быть скомпилированы GCC / MinGW (несовместимые расширения языка компилятором MSVS, я полагаю).
  • google breakpad включает файлы решения MSVS (созданные gyp) и легко собирается с помощью MSVS (у меня получилось как в версиях 2008, так и в версии 2010 Express), в результате чего некоторые .lib s были связаны сtarget application.
  • , но скомпилированные выше файлы .lib не понятны MinGW ld, поэтому не могут быть связаны с проектом Qt.Известна несовместимость форматов библиотек. Тем не менее,
  • файлы .lib из MSVS 2008 (а не 2010) понимаются инструментом reimp из инструментов MinGW (последний доступен), который предназначен для перевода библиотек изФормат MSVS в формате MinGW.В моем случае символы экспортируются, по-видимому, правильно, и некоторые .obj файлы тоже, но перекомпилированная библиотека (с dlltool из MinGW) по-прежнему не имеет связи с MinGW ld.
  • И вся эта возня с .lib linkable заблокирован из-за другой проблемы: в Qt Project требуются действительные заголовки для компиляции клиентского кода, и эти заголовки в точности совпадают с заголовками из breakpad, включая DbgHelp.h, см. Выше!

В настоящее времяОткрытые альтернативы, которые я вижу:

  • Полностью переключите приложение с Qt / MinGW (Creator) на Qt / MSVS, что может позволить прямое соединение с разделителем восходящего потока.Я думаю, что это является основой успеха небольших гугл-сценариев использования Qt + breakpad.
  • Создайте некоторый гибридный подход, где приложение создается как обычно с Creator, а затем связывается с breakpad с помощью компоновщика MSVS.Но опять же, заголовки!
  • Оторвите минимальное закрытие того, что требуется от заголовка Microsoft от заголовков Microsoft для компиляции с чистым Qt Creator.

Есть предложения, есть опыт?

1 Ответ

0 голосов
/ 01 декабря 2011

Извините, что разочаровал вас, но интеграция с QtBreakpad не была разработана и протестирована с MinGW.

...