2013-07-19 6 views
9

私はちょうどCでコーディングを開始し、gccに設定されたデフォルトのCコンパイラで他の人のMakefileを実行しました。私はMac OSX 10.8 Mountain Lionを使用しています。私は「XCode Command Line Tools」でコンパイラをインストールしたと思います。コマンドラインで "make"を実行した後、私はこれらの厄介な.dSYMファイルを各プログラム用に入手します。私はこれらがデバッグファイルだと読んでいますが、本当に必要ですか?コマンドラインからそれらが生成されないようにする方法はありますか?.dSYMファイルは、コマンドライン(Mac)から生成

+1

'dsymutil'が' Makefile'で実行されていることを確認し、コメントアウトしてください。 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から削除することができます。

関連する問題