2013-07-19 34 views
9

Właśnie rozpocząłem kodowanie w C i uruchomiłem plik Makefile innej osoby z domyślnym kompilatorem C ustawionym na gcc. Jestem na Mac OSX 10.8 Mountain Lion i uważam, że zainstalowałem kompilator za pomocą "XCode Command Line Tools". Po uruchomieniu "make" w wierszu poleceń, dostaję te denerwujące pliki .dSYM dla każdego programu. Czytałem, że są to pliki debugowania, ale czy są naprawdę potrzebne? Czy istnieje sposób, aby uniemożliwić ich generowanie z wiersza poleceń?.dSYM wygenerowane z wiersza poleceń (komputer Mac)

+1

Sprawdź, czy 'dsymutil' jest uruchamiany w' Makefile' i skomentuj go. 'gcc' na OS X nie powinno generować tych na własnych. Narzędzie, które to robi, nazywa się 'dsymutil'. Ponadto: Nie, nie są wymagane do uruchomienia pliku binarnego i służą wyłącznie do debugowania. –

+0

W pliku Makefile nie ma pliku dsymutil, ale uruchamiane są następujące flagi: CFLAGS = -m32 -g -O0 -std = gnu99 -Wszystkie – pyrrhic

Odpowiedz

7

Tak, pliki dSYM są niezbędne. W szczególności zawierają tabele symboli zawarte w kompilacjach debugujących Xcode; wersje wydania umieszczają symbole w tym oddzielnym pliku. Jeśli kiedykolwiek zajdzie potrzeba przeanalizowania śledzenia stosu z wersji kompilacji, będzie to potrzebne. I upewnij się, że nie zgubisz plików, ponieważ ponowne wykonanie kompilacji, nawet jeśli źródło jest absolutnie takie samo, nie wygeneruje użytecznego pliku dSYM. Każda kompilacja otrzymuje identyfikator UUID i zmienia się z każdą kompilacją, nawet jeśli źródło się nie zmieniło. (Przypuszczam, że zawiera znacznik czasu, a nawet liczbę losową.)

Jeśli wyrzucisz pliki dSYM, jeśli nagle zauważysz awarię aplikacji, możesz być przykro.

0

Są one konieczne tylko w przypadku konieczności interpretowania lokalizacji w śladach stosu w raporcie o awarii.

+1

Są one również przydatne, aby mieć odniesienie do źródła w gdb –

22

Flaga -g do GCC wygeneruje symbole debugowania. Możesz po prostu usunąć tę flagę z CFLAGS.