2013-07-19 51 views
9

我剛剛開始用C語言編寫代碼,並運行其他人的Makefile,默認C編譯器設置爲gcc。我在Mac OSX 10.8 Mountain Lion上,我相信我用「XCode Command Line Tools」安裝了編譯器。在命令行運行「make」之後,我得到了每個程序的煩人的.dSYM文件。我讀過這些是調試文件,但它們真的有必要嗎?有沒有辦法阻止它們從命令行生成?.dSYM文件從命令行生成

+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

GCC的-g標誌將生成調試符號。您可以簡單地從CFLAGS中刪除該標誌。