crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

 
Ответить в данную темуНачать новую тему
> mingw + google breakpad + windows
romanick
  опции профиля:
сообщение 19.7.2013, 11:01
Сообщение #1


Студент
*

Группа: Участник
Сообщений: 32
Регистрация: 9.5.2010
Пользователь №: 1700

Спасибо сказали: 0 раз(а)




Репутация:   0  


Добрый день!
Вопрос тем кто разобрался с google breakpad.
Решил я его тоже пощупать. Установка и тестирование под linux прошло отлично - стек вызовов с местом исключения на основе минидампа и файла символов получается отлично.
А вот под windows начались проблемы.
Для начала, замечу что сам google отлично документирует только linux-версию своего продукта, а вот в версии документации под windows зияют огромные дыры. Логично предположив, что всё должно быть абсолютно аналогично я тем не менее столкнулся с тем что утилита minidump_stackwalk.exe хотя и находит нужный файл с символами по пути symbols\приложение\hash\приложение.exe.sym, однако в результирующий файл эти символы почему-то не попадают.
Прилагаю вывод minidump_stackwalk.exe и результирующий файл со стеком. Файл с символами делаю разумеется на основе debug-версии приложения.
Что я делаю не так?

Прикрепленный файл  1.txt ( 2,52 килобайт ) Кол-во скачиваний: 1042


получившийся стек:
Прикрепленный файл  s.txt ( 6,06 килобайт ) Кол-во скачиваний: 867



Qt 4.8.3+mingw
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Iron Bug
  опции профиля:
сообщение 19.7.2013, 12:10
Сообщение #2


Профессионал
*****

Группа: Модератор
Сообщений: 1611
Регистрация: 6.2.2009
Из: Yekaterinburg
Пользователь №: 533

Спасибо сказали: 219 раз(а)




Репутация:   12  


скорее всего, проблема в том, что под вендой и линюксом разные форматы дебага. у gcc в mingw формат DWARF2, а нативный вендозный - COFF или PDB (если не ошибаюсь). чтобы это работало, надо отлаживаться под отладчиком, который использует DWARF2 формат. либо пересобрать gcc с другой опцией PREFERRED_DEBUGGING_TYPE.
я не знаю, какой формат данных у утилиты minidump_stackwalk.exe, но скорее всего - вендозный. или как-то задаётся в параметрах или конфигурации.

можешь посмотреть тут:
https://bitbucket.org/jchadwick/breakpad-mingw
там человек уже сделал свою версию этой утилиты для работы с mingw.

Сообщение отредактировал Iron Bug - 19.7.2013, 12:34
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
romanick
  опции профиля:
сообщение 19.7.2013, 12:41
Сообщение #3


Студент
*

Группа: Участник
Сообщений: 32
Регистрация: 9.5.2010
Пользователь №: 1700

Спасибо сказали: 0 раз(а)




Репутация:   0  


Цитата(Iron Bug @ 19.7.2013, 12:10) *
скорее всего, проблема в том, что под вендой и линюксом разные форматы дебага. у gcc в mingw формат DWARF2, а нативный вендозный - COFF (если не ошибаюсь). чтобы это работало, надо отлаживаться под отладчиком, который использует DWARF2 формат. либо пересобрать gcc с другой опцией PREFERRED_DEBUGGING_TYPE.
я не знаю, какой формат данных у утилиты minidump_stackwalk.exe, но скорее всего - вендозный. или как-то задаётся в параметрах или конфигурации.


Спасибо за ответ.
google breakpad использует формат минидампа windows, причём на всех системах. Они это объясняют тем что он отлично документирован.
Далее. Я не совсем понимаю причём здесь отладчик. У меня нет проблем с отладкой, у меня есть проблема сборки стека вызовов на основании файла минидампа и отладочных символов под windows. http://code.google.com/p/google-breakpad/w...tedWithBreakpad - см. на схеме последний шаг "Crash collector".
Насчёт пересборки gcc - попробую. Но вообще ощущение что я изобретаю велосипед...

Цитата(Iron Bug @ 19.7.2013, 13:10) *
можешь посмотреть тут:
https://bitbucket.org/jchadwick/breakpad-mingw
там человек уже сделал свою версию этой утилиты для работы с mingw.


Собственно ей и пользуюсь!
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Iron Bug
  опции профиля:
сообщение 19.7.2013, 14:11
Сообщение #4


Профессионал
*****

Группа: Модератор
Сообщений: 1611
Регистрация: 6.2.2009
Из: Yekaterinburg
Пользователь №: 533

Спасибо сказали: 219 раз(а)




Репутация:   12  


есть ещё под вендой пара косяков.
во-первых, битность системы, на которой происходит просмотр дампа, должна совпадать с битностью системы, в которой он получен.
и ещё: по крайней мере, стандартная студийная отладка не может открыть дамп, пока не создашь точно такой же каталог, как на машине, где получен сам дамп. то есть, туда надо сложить dll, exe и pdb, обязательно на тот же диск и с теми же каталогами. тогда дебаг дампа работает. может, и тут то же самое?
а может, он просто не может сожрать обращения из Qt-шных библиотек и отследить, откуда они идут? в смысле, есть ли у него sym на Qt?

Сообщение отредактировал Iron Bug - 19.7.2013, 14:13
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
romanick
  опции профиля:
сообщение 21.7.2013, 14:26
Сообщение #5


Студент
*

Группа: Участник
Сообщений: 32
Регистрация: 9.5.2010
Пользователь №: 1700

Спасибо сказали: 0 раз(а)




Репутация:   0  


Не заметил сразу то что написано на главной странице проекта breakpad mingw.

Цитата
The relevant utilities (minidump-stackwalk, for example) can not actually load MinGW-generated symbols. This is a huge issue, but it is not yet resolved.


Получается что для программ откомпилированных под mingw нет никакой возможности сделать crash reporting. Печально...
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Iron Bug
  опции профиля:
сообщение 22.7.2013, 8:07
Сообщение #6


Профессионал
*****

Группа: Модератор
Сообщений: 1611
Регистрация: 6.2.2009
Из: Yekaterinburg
Пользователь №: 533

Спасибо сказали: 219 раз(а)




Репутация:   12  


я подозреваю, что если собрать mingw с другой дебажной информацией, то всё-таки можно. но пересборка mingw - процесс, который занимает чуть ли не целый день - во-первых, настроек дофига, во-вторых, само по себе оно долго собирается, со всеми библиотеками и т.п.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Profi_GMan
  опции профиля:
сообщение 2.2.2018, 18:19
Сообщение #7


Новичок


Группа: Новичок
Сообщений: 1
Регистрация: 14.1.2018
Пользователь №: 4733

Спасибо сказали: 0 раз(а)




Репутация:   0  


Я знаю, что вопрос был задан очень давно, я пишу для тех, кто с из гугла пришёл.
Чтобы преобразовать отладочные символы, здесь есть программа. Ей всего лишь надо скормить ехешку, и она сама всё сделает
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 22.11.2024, 1:20