Next: , Previous: Dumpdef, Up: Debugging


6.2 マクロの呼び出しをトレースする

組み込みマクロtraceontraceoffを使うと、マクロの呼び出しと 展開をトレース(trace)することができます。

     traceon(...)
     traceoff(...)

traceontraceoffを引数なしで呼ぶと、 すべての定義済みのマクロに対してトレースがそれぞれオンまたはオフとなります。 引数を指定した場合、その名前のマクロに対してだけ作用します。

traceontraceoffは展開されると消滅します。

トレース中のマクロが呼ばれるたびに、 そのマクロの呼び出しに関する情報が引数の収集が終ったあとに表示されます。 マクロの呼び出しが展開後に消滅しないときは展開の結果が表示されます。 出力は標準エラー出力へ直接行われます。

     define(`foo', `Hello World.')
     ⇒
     define(`echo', `$@')
     ⇒
     traceon(`foo', `echo')
     ⇒
     foo
     error-->m4trace: -1- foo -> `Hello World.'
     ⇒Hello World.
     echo(gnus, and gnats)
     error-->m4trace: -1- echo(`gnus', `and gnats') -> ``gnus',`and gnats''
     ⇒gnus,and gnats

ダッシュ(-)の間にある数字は展開の深さを表します。 たいていは最も外側のレベルでの展開を表す1となりますが、 クォートされていないマクロの呼び出しを引数が含む場合には増えていきます。

表示の詳細を調整するための情報についてはSee Debug Levelsを参照してください。