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

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

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

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

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

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

2 ответа

Решение

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

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

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

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

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

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

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

Другие вопросы по тегам