2015-07-05 25 views
5

Wiem, że pliki dSYM są przydatne podczas generowania ostatecznej wersji aplikacji dla sklepu z aplikacjami, ponieważ będą miały symbole debugowania, które są używane do oznaczenia dziennika awarii.Czy pliki dSYM są potrzebne podczas programowania?

Moje pytanie brzmi, czy są one niezbędne w czasie opracowywania. Pytam o to, ponieważ wyłączając je, czas kompilacji spada o 75%.

+0

Czy używasz debuggera? – zaph

+0

dlaczego? Mam je teraz wyłączone i nadal mogę korzystać z debuggera. – SpaceDog

+0

Chyba patrzę na coś innego. Zastanawiasz się, jakie ustawienie się zmieniasz? – zaph

Odpowiedz

9

Po pierwsze, aby uniknąć nieporozumień: domyślny format informacji debugowania dla konfiguracji debugowania dla nowych projektów iOS to "DWARF z plikiem dSYM", ale dla nowych projektów OS X to po prostu "DWARF".

Część tego jest historyczna, ale obecnie ustawienie iOS jest nadal "DWARF z plikiem dSYM" tylko dlatego, że część Xcode, która symbolizuje logi awarii, gdy są one kopiowane z urządzeń z systemem iOS, wykorzystuje do tego celu dSYM. Jeśli więc planujesz przetestować swoją kompilację deweloperską, pobierając ją na urządzenie, a następnie uruchamiając palcem i wykonując ją poza debuggerem, wówczas dSYM jest przydatny w zrozumieniu wszelkich awarii, które napotkasz. Jeśli korzystasz z debuggera, po prostu zatrzymasz się w momencie awarii, więc nie musisz symbolizować raportu o awarii.

Poza tym, nie sądzę, żebyś stracił cokolwiek, przełączając się na DWARF na iOS. A jak zauważył SpaceDog, przyspiesza to w czasie, ponieważ debugger wie, jak leniwie powiązać to, czego potrzebuje DWARF, podczas gdy narzędzie do tworzenia dSYM (dsymutil) musi przeczytać & przepisać to wszystko.

Oczywiście po wykonaniu kompilacji wydania należy dokonać archiwizacji informacji o debugowaniu - która jest punktem całego dSYM, ponieważ w przeciwnym razie informacje debugowania (zawarte w plikach .o) zostaną usunięte wraz z inne pośrednie produkty do budowania i nie będziesz w stanie symbolizować awarii, które wystąpią w opublikowanej aplikacji.

+0

Widziałem gdzieś, że informacje debugowania zawarte są w pliku mach-o, dSYM tylko wyodrębnić plik z niego, czy to prawda? – Karl

+0

To w większości poprawne, chociaż nie jest to zwykła kopia z .o file do dSYM. Kiedy linker tworzy obraz binarny, może zmienić kolejność funkcji od sposobu, w jaki znajdują się one w plikach .o, i pasach z martwym kodem, itp. Informacja o tych transformacjach jest zapisana w "mapie debugowania" w pliku binarnym. dsymutil używa tej mapy debugowania, aby "połączyć" informacje debugowania pliku .o podczas kopiowania dSYM. –

+0

wspaniała odpowiedź! dzięki. Gdy chcemy pobrać wersję na urządzenie i "uruchomić palcem" (to jest to, co zazwyczaj wykonuje QA), przekazujemy im wersję Release - tak, jak mamy DSYM. –

2

Potrzebujesz tylko DWARF do programowania i DWARF z dSYM do wydania.

Nowy projekt pochodzi domyślnie tej konfiguracji>

enter image description here

Zobacz też ten SO Answer.

+0

pytanie brzmi: dlaczego Apple wysyła Xcode z tym dSYM włączony do rozwoju ... – SpaceDog

Powiązane problemy