__FILE__
マクロは、現在のファイルのフルパスに展開されます。これは、実行可能ファイルへのパスを取得している可能性があります。たとえば、assert
マクロの展開には、__FILE__
マクロが含まれています。
strings | grep
パイプラインの出力を見てください。それらのファイルごとに、Xcodeでプロジェクトに行き、そのファイルを開きます。次に、ファイルのパスのためのプリプロセッサの出力を検索
を:次に関連ファイルあのものに移動し、「前工程」を選択します。 #
の行番号/パス・ディレクティブがたくさんあるため、多くの誤検出があります。これらは無視してもかまいません。デバッグ出力は、実行可能ファイルには含まれていません(ビルド設定で何か変わったことがない限り)。プリプロセッサの出力をファイルに保存してからそのファイルを開き、grep
にパイプするか、正規表現の検索/置換を使用して#
で始まるすべての行を削除する方が速いかもしれません。
パスが文字列定数として表示される他のインスタンスを検索します。パスが実行可能ファイルに埋め込まれてしまいますケースだ
(__builtin_expect(!(argc > 0), 0) ? __assert_rtn(__func__, "/Volumes/b/Users/mayoff/TestProjects/textViewChanged/textViewChanged/main.m", 16, "argc > 0") : (void)0);
:あなたはassert
マクロを使用する場合たとえば、あなたはこのような何かを見つけるでしょう。
パスが埋め込まれている場所がすべて見つからない場合は、関連ファイルの予定表から[アセンブリ]を選択してみてください。アセンブリには、パスを含むコメントがいっぱいになります。 @
の後のすべてがアセンブリ出力のコメントですので無視してください。
パスは.file
ディレクティブにも表示されます。私はこれらがあなたの実行ファイルには入っていないデバッグシンボルの出力しか生成しないと思うので、それらも無視することができます。
.section DWARF,...
の直後に.asciz
ディレクティブのパスが表示されます。これはあなたが無視できるデバッグシンボルのものです。
パスがアセンブリ出力に表示される残りのケースを探します。これらのケースを排除する方法を理解する必要があります。どのようにするかは、パスが表示されるコンテキストによって異なりますので、さらに役立つ必要がある場合は、検索した内容で質問を更新してください。
「デバッグ」モードで構築していますか?その場合、バイナリにはパス情報を含むデバッグシンボルが含まれています。 (私はちょうどそのことを推測しています) – bdesham
アップルに提出されたアーカイブを使用しました。 – bbarnhart
必ずしもあなたがまだデバッグモードではないとは思わない。 [製品]> [スキーム]に移動し、[リリース]または[配布]スキームが選択されていることを確認します。 – bdesham