2013-07-19 3 views
9

방금 ​​C로 코딩을 시작했고 gcc로 설정된 기본 C 컴파일러로 다른 사람의 Makefile을 실행했습니다. 저는 Mac OSX 10.8 Mountain Lion을 사용하고 있으며 "XCode Command Line Tools"로 컴파일러를 설치했다고 생각합니다. 커맨드 라인에서 "make"를 실행하면 각 프로그램에 대해 성가신 .dSYM 파일이 생깁니다. 나는 이것들이 디버그 파일 인 것을 읽었지 만 정말로 필요합니까? 커맨드 라인에서 생성되는 것을 막을 수있는 방법이 있습니까?.dSYM 파일 (Mac)

+1

'Makefile'에서'dsymutil'이 실행되는지 확인하고 주석 처리하십시오. OS X의'gcc '는 그것들을 생성하지 않아야합니다. 이를 수행하는 도구를'dsymutil '이라고합니다. 또한 : 아니오, 그들은 바이너리를 실행할 필요가없고 디버깅 목적으로 만 사용됩니다. –

+0

Makefile에는 dsymutil이 없지만 다음 플래그가 실행됩니다. CFLAGS = -m32 -g -O0 -std = gnu99 -Wall – pyrrhic

답변

7

예, dSYM 파일이 필요합니다. 특히 Xcode 디버그 빌드에 포함 된 기호 테이블을 포함합니다. 릴리스 빌드는이 별도의 파일에 심볼을 넣습니다. 릴리스 빌드에서 스택 추적을 분석해야하는 경우 필요합니다. 소스가 절대적으로 같더라도 빌드를 다시 수행하면 사용 가능한 dSYM 파일이 생성되지 않으므로 파일을 잃어 버리지 않도록하십시오. 각 빌드에는 UUID가 주어지며 소스가 변경되지 않은 경우에도 각 빌드마다 변경됩니다. (타임 스탬프 또는 임의의 숫자가 포함 된 것 같습니다.)

dSYM 파일을 버리면 갑자기 앱이 갑자기 충돌하는 경우 유감입니다.

0

충돌 보고서 내의 스택 추적 위치를 해석해야하는 경우에만 필요합니다.

+1

이들은 gdb에서 소스 참조를 갖는 데 유용합니다 –

22

-g GCC 플래그는 디버그 기호를 생성합니다. 단순히 해당 플래그를 CFLAGS에서 제거 할 수 있습니다.