もちろん、もう会社を離れている他の誰かによって書かれた、非常に複雑で多層的なメイクファイル (多数のインクルード ファイル、多数のターゲット、多数の変数) にいくつかの機能を追加する必要があります。ここには、一部は理解できても、すべてを理解していない人がいます。
シングルステップ実行できる Make デバッガー、またはコンパイルが通過する多くのファイルとターゲットの実行を追跡する同等の方法はありますか? または、このことがどのように機能するかを理解する他の方法はありますか?
もちろん、もう会社を離れている他の誰かによって書かれた、非常に複雑で多層的なメイクファイル (多数のインクルード ファイル、多数のターゲット、多数の変数) にいくつかの機能を追加する必要があります。ここには、一部は理解できても、すべてを理解していない人がいます。
シングルステップ実行できる Make デバッガー、またはコンパイルが通過する多くのファイルとターゲットの実行を追跡する同等の方法はありますか? または、このことがどのように機能するかを理解する他の方法はありますか?
この記事をご覧になることをお勧めしますhttp://oreilly.com/catalog/make3/book/ch12.pdf (Oreilly の「Managing Projects with GNU Make, Third Edition」の「Debugging Makefiles」の章)
GNU Make には、実行中にいくつかのデバッグ情報を出力するためのさまざまなオプションがあります。-d
大量のデバッグ情報を出力します。おそらく多すぎて、必要なものではないかもしれませんが、それをふるいにかけてみてください. -n
また、予行演習を行う、-p
ルールのデータベースを-w
印刷する、複雑な再帰的な make の問題を追跡するのに役立つように現在のディレクトリを印刷する、--warn-undefined-variables
変数に関する特定の問題を追跡するなどのオプションもあります。
それでもうまくいかない場合は、Remakeを試してみてください。これは、デバッガーを使用してパッチを適用した GNU make であると主張しています。私はそれを使用していませんが、ドキュメンテーションから、それはあなたを助けるかもしれないように見えます.Makefilesのバグを追跡しようとすることに関するいくつかのアドバイスがあります.