Почему GDB говорит "нет информации о номере строки", когда символизирует аварийный дамп с использованием файла dSYM? - PullRequest
2 голосов
/ 07 декабря 2011

Я создал приложение для Mac OS X, которое настроено на удаление отладочной информации для Release и создание файлов dSYM.

(проект настроен, как описано здесь: http://bit.ly/tJEQml кэшированная версия http: /developer.apple.com/tools/xcode/symbolizingcrashdumps.html, которая больше не существует)

Как и ожидалось, сгенерированные отчеты о сбоях для моего приложения не показывают информацию о строке для трассировки стека внутренних вызовов моих приложений.

При анализе отчета о сбое я просто не могу получить GDB или atos , чтобы получить информацию о строке для трассировки стека.

Отрывок отчета о сбое:

0   CoreFoundation          0x00007fff920f7286 __exceptionPreprocess + 198
1   libobjc.A.dylib         0x00007fff91f74d5e objc_exception_throw + 43
2   CoreFoundation          0x00007fff920f70ba +[NSException raise:format:arguments:] + 106
3   CoreFoundation          0x00007fff920f7044 +[NSException raise:format:] + 116
4   CoreFoundation          0x00007fff920b429b -[__NSCFDictionary setObject:forKey:] + 219
5   AppName                 0x00000001015e9c61 AppName + 85089

Я попытался GDB , выполнив следующие действия:

  1. под названием gdb -arch x86_64
  2. загрузил приложение с помощью команды file (пробовал и AppName.app, и Content / MacOS / AppName)
  3. GDB запрашивает символы, которые были загружены (даже пытался загрузить dSYM с помощью file)
  4. называется info line * 0x00000001015e9c61
  5. GDB отвечает No line number information available for address 0x1015e9c61

Я пытался с atos , выполняя следующие действия:

  1. называется atos -arch x86_64 -o AppName.app (также пытался напрямую в двоичный файл и в файл DWARF dSYM)
  2. набрал 0x00000001015e9c61 и нажал enter
  3. atos просто повторяет 0x00000001015e9c61

Что может быть не так?

Кажется, что символы загружаются правильно (по крайней мере, об этом сообщает gdb), и я уверен, что сбой, dSYM и комплект приложений совпадают.

1 Ответ

3 голосов
/ 07 декабря 2011

Я до сих пор не понял, как заставить ручную символизацию работать, но я нашел хороший скрипт, который сделает это автоматически.

Сценарий можно найти по адресу: https://github.com/nikyoudale/symbolicatecrash-mac

Я прочитаю код сценария, чтобы выяснить, что он делает, и отвечу на свой вопрос.

...