Символизиране на журнали за сривове в XCode 4.3.2

Всеки път, когато се случи срив на моето приложение, регистрационните файлове за сривове се показват в символна форма в органайзера. Сега проблемът е, че всички адреси на паметта, които сочат към iOS класове, се символизират добре, но адресите на паметта на моите класове на приложения не се символизират. Кое свойство на проект XCode трябва да задам, за да ги активирам.

Това са текущите настройки за компилация, които активираха символизиране на iOS класове. Използвам XCode 4.3.2.

Текущи настройки за компилация


person Abhinav    schedule 12.04.2012    source източник
comment
Между другото, случайно да имате инсталиран Xcode 3.x на същата система?   -  person lukasz    schedule 13.04.2012
comment
@lukasz защо питаш за това?   -  person Till    schedule 13.04.2012
comment
Доколкото чух, това създаваше проблеми със символизирането. И моите проблеми също изчезнаха по същото време, когато най-накрая се отървах от 3.x. Може обаче да е било съвпадение.   -  person lukasz    schedule 13.04.2012
comment
Намерихте ли отговор? Имам същия проблем. Преди работеше добре в XCode 4.1   -  person Johannes Rudolph    schedule 27.04.2012


Отговори (4)


Изключихте ли прожекторите? symbolicatecrash използва spotlight, за да намери двоичните и dsym файловете, така че ако сте изключили spotlight, той няма да може да ги намери. Както и да е, ето как да преобразувате шестнадесетичен адрес на stacktrace в номер на ред:

[1] Намерете файла .dSym, като отидете на XCode->Organizer, щракнете върху архиви, след това щракнете с десния бутон върху архива и CD в тази директория (можете просто да плъзнете папката в прозорец на обвивката).

[2] cd в директорията dSYMs.

[3] стартирайте командата dwarfdump, за да преведете шестнадесетичния адрес в номер на ред във вашия код:

dwarfdump --arch armv7 myApp.dSYM --lookup 0xaabbccdd | grep 'Line table'
person CpnCrunch    schedule 12.10.2013

Strip Debug Symbols During Copy: Трябва да бъде YES при компилации на конфигурация без отстраняване на грешки, тъй като ще взриви двоичния файл на приложението ви с 30-50%

Debug Information Format: Трябва да бъде DWARF with dSYM File за всички конфигурации, за да можете да символизирате вашите символи от всеки двоичен файл.

Сега предполагам, че опитвате това на компилации за отстраняване на грешки, на компилации, които не са най-новите резултати от командата за изграждане в Xcode. Трябва да запомните, че всеки път, когато стартирате командата за изграждане, се генерира нов изпълним файл и нов dSYM пакет, като предишният се отменя! (Освен ако използвате функцията за архивиране)

Скриптът за символизиране анализира UUID от отчета за срив на вашето приложение и търси в съответния пакет .app И .app.dSYM чрез прожектор. Така че, ако прожекторът не индексира целевия път или двоичните файлове са заменени от друго изпълнение на компилация, той няма да може да символизира символите на приложенията.

person Kerni    schedule 14.04.2012
comment
Как мога да добавя набор от символи към XCode, за да символизирам съответните журнали за срив? - person Dave Cameron; 03.05.2012
comment
dSYM на тази компилация трябва да е наличен и индексиран от Spotlight. След това трябва да се намери. Така. напр. като архивирате бета версии и версии на магазина за приложения, трябва да сте добре. Компилациите за отстраняване на грешки не се архивират и всяка нова компилация ще презапише предишния dSYM. И това ще бъде различно, въпреки че не сте променили нито един ред код. - person Kerni; 03.05.2012

Опитайте да зададете последваща обработка на внедряване на НЕ.

DEPLOYMENT_POSTPROCESSING. Активирането на тази настройка показва, че двоичните файлове трябва да бъдат премахнати и информацията за файловия режим, собственика и групата трябва да бъде зададена на стандартни стойности.

person lukasz    schedule 13.04.2012
comment
Настройването на DEPLOYMENT_POSTPROCESSING на NO не решава проблема. - person Abhinav; 13.04.2012

Изглежда, че xcode използва последната архивирана компилация .dsym файл, за да символизира вашите регистрационни файлове (дори при отстраняване на грешки), така че опитайте да архивирате приложението си.

След архивиране на вашето приложение Повторно символизирайте вашите доклади за сривове.

При мен се получи.

person M Penades    schedule 07.02.2013
comment
Това не е правилно! Процесът на символизация използва Spotlight за търсене на съответстващ dSYM според UUID на приложенията, който е генерирал доклада за срив. Всяка компилация ще доведе до нов UUID. Архивирането гарантира, че ще имате правилния dSYM за тези компилации. Но напр. когато създавате компилации за отстраняване на грешки, всяка нова компилация ще презапише предишната и символизирането на сривове от по-ранни компилации вече не е възможно. - person Kerni; 07.02.2013