![]() |
Здравствуйте, гость ( Вход | Регистрация )
![]() |
romanick |
![]()
Сообщение
#1
|
Студент ![]() Группа: Участник Сообщений: 32 Регистрация: 9.5.2010 Пользователь №: 1700 Спасибо сказали: 0 раз(а) Репутация: ![]() ![]() ![]() |
Добрый день!
Вопрос тем кто разобрался с google breakpad. Решил я его тоже пощупать. Установка и тестирование под linux прошло отлично - стек вызовов с местом исключения на основе минидампа и файла символов получается отлично. А вот под windows начались проблемы. Для начала, замечу что сам google отлично документирует только linux-версию своего продукта, а вот в версии документации под windows зияют огромные дыры. Логично предположив, что всё должно быть абсолютно аналогично я тем не менее столкнулся с тем что утилита minidump_stackwalk.exe хотя и находит нужный файл с символами по пути symbols\приложение\hash\приложение.exe.sym, однако в результирующий файл эти символы почему-то не попадают. Прилагаю вывод minidump_stackwalk.exe и результирующий файл со стеком. Файл с символами делаю разумеется на основе debug-версии приложения. Что я делаю не так? ![]() получившийся стек: ![]() Qt 4.8.3+mingw |
|
|
![]() |
Iron Bug |
![]()
Сообщение
#2
|
![]() Профессионал ![]() ![]() ![]() ![]() ![]() Группа: Модератор Сообщений: 1611 Регистрация: 6.2.2009 Из: Yekaterinburg Пользователь №: 533 Спасибо сказали: 219 раз(а) Репутация: ![]() ![]() ![]() |
скорее всего, проблема в том, что под вендой и линюксом разные форматы дебага. у 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 |
![]()
Сообщение
#3
|
Студент ![]() Группа: Участник Сообщений: 32 Регистрация: 9.5.2010 Пользователь №: 1700 Спасибо сказали: 0 раз(а) Репутация: ![]() ![]() ![]() |
скорее всего, проблема в том, что под вендой и линюксом разные форматы дебага. у 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 - попробую. Но вообще ощущение что я изобретаю велосипед... можешь посмотреть тут: https://bitbucket.org/jchadwick/breakpad-mingw там человек уже сделал свою версию этой утилиты для работы с mingw. Собственно ей и пользуюсь! |
|
|
![]() ![]() ![]() |
![]() |
|
Текстовая версия | Сейчас: 27.4.2025, 23:53 |