トラブルシューティングのために Makefile ターゲットをトレースするにはどうすればよいでしょうか? 質問する

トラブルシューティングのために Makefile ターゲットをトレースするにはどうすればよいでしょうか? 質問する

ビルド システムには長くて複雑な Makefile があります。特定の make 呼び出しに対してどのターゲットが実行されるかを正確に追跡する良い方法はありますか?

ベストアンサー1

使用make -dまたはmake --debug[=flags] オプション:

‘-d’

通常の処理に加えてデバッグ情報を出力します。デバッグ情報には、どのファイルが再作成の対象になっているか、どのファイル時刻が比較され、その結果は何か、実際に再作成が必要なファイルはどれか、どの暗黙のルールが考慮され、どのルールが適用されるか、つまり make が何を行うかを決定する方法に関するすべての重要な情報。このオプションは(以下を参照)-dと同等です。‘--debug=a’

‘--debug[=options]’

通常の処理に加えてデバッグ情報を出力します。出力にはさまざまなレベルとタイプを選択できます。引数を指定しないと、「基本」レベルのデバッグが出力されます。指定可能な引数は以下のとおりです。最初の文字のみが考慮され、値はコンマまたはスペースで区切る必要があります。

a(all) すべてのタイプのデバッグ出力が有効になります。これは '-d' を使用するのと同じです。

b(基本)基本的なデバッグでは、古くなっていると判明した各ターゲットと、ビルドが成功したかどうかを出力します。

v(詳細) ; より上のレベルには‘basic’、解析された makefile や、再構築する必要がなかった前提条件などに関するメッセージが含まれます。このオプションは‘basic’メッセージも有効にします。

i(暗黙的) 各ターゲットの暗黙的ルール検索を説明するメッセージを出力します。このオプションは‘basic’メッセージも有効にします。

j(ジョブ) 特定のサブコマンドの呼び出しに関する詳細を示すメッセージを出力します。

m(makefile) デフォルトでは、makefile の再作成中に上記のメッセージは有効になりません。このオプションは、makefile の再作成中にもメッセージを有効にします。このオプションは‘all’このオプションを有効にすることに注意してください。このオプションも‘basic’メッセージを有効にします。

もう一つの選択肢はリメイク- 改善されたエラー報告、実行のトレース機能、およびデバッガーを追加した GNU Make のパッチ バージョン。

おすすめ記事