Можно ли символизировать аварийные дампы MonoTouch и получать из них номера строк?

Можно ли символизировать аварийные дампы MonoTouch и получать из них номера строк? Если да, то как это делается?

Я настроил свой проект следующим образом:

  • Сборка в режиме выпуска
  • Флажок «Включить отладку» в «Параметры проекта» -> «Сборка» -> «Сборка iPhone» -> вкладка «Общие».
  • Флажок «Выдавать отладочную информацию» в «Параметры проекта» -> «Сборка» -> «Компилятор».

Теперь, когда я запускаю symbolicatecrash для дампа, я получаю имена своих методов в трассировке стека, но только со смещением относительно них (например, «+ 268»), а не с номером строки.

Я использую MonoTouch 4.21.


person vlad259    schedule 27.09.2011    source источник
comment
Нет, это не так, но это слово Apple (в мире Apple ;-) см. developer.apple.com/library/ios/#technotes/tn2151/_index.html   -  person poupou    schedule 07.10.2011


Ответы (2)


Краткий ответ: я думаю, что проблема связана с опережающим компилятором (AOT), но вам лучше отправить такой вопрос по адресу список рассылки mono-devel, чтобы получить окончательный ответ.

Длинный ответ:

Компиляторы/среда выполнения Mono (и это поведение унаследовано MonoTouch) хранят отладочную информацию, включая номера строк, для своих сборок внутри файлов mdb.

XCode работает с файлами DWARF (DSYM). Когда XCode символизирует аварийный дамп, он просматривает (только) символы DWARF (созданные AOT), чтобы получить свою информацию, т. Е. Файлы mdb не просматриваются.

Теперь отладчик Mono (и среда выполнения) также могут работать с DWARF (что должно отвечать всем требованиям). Однако для MonoTouch я не уверен, что компилятор AOT (который вызывает gcc) создает финальные символы DWARF, содержащие номера строк C#, что приводит к символам. em> и offsets (оба доступны для gcc).

person poupou    schedule 06.10.2011
comment
Так вы говорите, что это невозможно? Почему это сработало для Джеффа? stackoverflow .com/questions/5398986/ - person Krumelur; 10.10.2011
comment
Вы также можете проверить консоль iPhone в Xcode или утилите настройки iPhone на наличие управляемой трассировки стека. ‹ — это отдельные журналы (из аварийного дампа) и отдельные инструменты. Вопрос не в том, можно ли было увидеть управляемые трассировки стека (легко для локального сбоя), а в том, можете ли вы получить их из аварийного дампа (как вы получаете от третьей стороны). - person poupou; 11.10.2011

какую версию xcode вы используете?

В более ранних версиях была проблема — проверьте https://github.com/chrispix/symbolicatecrash-fix

person Karl Ranseier    schedule 05.10.2011