82

多くの変数を含む非常に複雑なメイクファイルを含む大規模なレガシー コードベースがあります。時々、それらを変更する必要がありますが、変更が期待どおりに機能しない理由を理解するのは非常に困難です。私が見つけたいのは、基本的に「make」プロセスのステップスルー デバッグを行うツールです。この場合、ディレクトリを指定すると、さまざまな変数の値をさまざまな時点で確認できます。処理する。何かが欠けている可能性はありますが、作成するデバッグフラグはどれも私が望むものを示しているようには見えません。これを行う方法を知っている人はいますか?

4

6 に答える 6

75

make -nand make -np、および biggieを実行した結果を見たことがありmake -ndますか?

のかなり新しいバージョンを使用していますgmakeか?

O'Reilly の優れた本「Managing Projects with GNU Make」( Amazon Link )の O'Reilly のサイトで入手できるMakefile のデバッグに関する無料の章を見たことがありますか?

于 2008-09-10T17:22:44.107 に答える
38

リメイクはあなたが探しているものだと確信しています。

ホームページから:

remakeは、改善されたエラー レポート、わかりやすい方法で実行をトレースする機能、およびデバッガーを追加する、GNU make ユーティリティのパッチが適用され、最新化されたバージョンです。

これは gdb のようなインターフェースを持ち、(x)emacs の mdb モードでサポートされています。これはブレークポイント、ウォッチなどを意味します。(x)emacs が気に入らない場合はDDDがあります。

于 2008-11-24T09:45:26.847 に答える
22

make コマンドライン オプションのマニュアル ページから:

-n, --just-print, --dry-run, --recon  
Print the commands that would be executed, but do not execute them.  

-d  Print debugging information in addition to normal processing.  
The debugging information says  
which files are being considered for remaking,  
which file-times are being compared and with what results,  
which files actually need  to  be  remade,  
which implicit  rules are considered and which are applied---  
everything interesting about how make decides what to do.  

--debug[=FLAGS] Print debugging information in addition to normal processing.  
If the FLAGS are omitted, then the behaviour is the same as if -d was specified.  
FLAGS may be:  
'a' for all debugging output same as using -d,  
'b' for basic debugging,  
'v' for more verbose basic debugging,  
'i' for showing implicit rules,  
'j' for details on invocation of commands, and  
'm' for debugging while remaking makefiles.  
于 2013-03-20T11:33:55.003 に答える
5

あなたが望むことを正確に行う特定のフラグを認識していませんが、

--印刷データベース
役に立ちそうです。

于 2008-09-10T17:28:45.497 に答える
0

http://gmd.sf.netにGNU make デバッガ プロジェクトがあり、非常に便利です。gmd でサポートされている主な機能はブレークポイントです。これは、ステッピングよりも便利です。これを使用するには、 http://gmd.sf.net から gmd を、 http://gmsl.sf.net から gmsl をダウンロードmakefileに「gmd を含める」ことを行います。

于 2014-08-14T15:22:44.327 に答える