20

質問のタイトルは自明だと思います。gcc によって生成された抽象構文ツリーを .dot ファイル (Graphviz によって生成されたファイル) にダンプしたいのは、それを .png ファイルなどで表示したいからです。それを行う方法はありますか?

前もって感謝します :)

4

2 に答える 2

32

2 つの方法があり、どちらも 2 つのステップを含みます

  1. GCC 内部 vcg サポートの使用

    1. vcg ダンプを使用してコード (test.c など) をコンパイルします。

      gcc -fdump-tree-vcg -g test.c

    2. サードパーティのツールを使用して、vcg からドット出力を取得します

      graph-easy test.c.006t.vcg --as_dot

  2. 生のダンプでコンパイルし、いくつかのスクリプトで前処理してドット ファイルを作成します (この便利な記事のように)

どちらの方法にもそれぞれ良い面と悪い面があります。最初は gimple 変換の前に AST のダンプを 1 つしか取得できませんが、簡単です。秒を使用すると、生のダンプをドット形式に変換できますが、スクリプトをサポートする必要があるため、オーバーヘッドが生じます。

何を優先するかは、あなた自身の選択です。


UPD: 時代は変わりつつあります。gcc 4.8.2 の新しいオプションにより、ドット ファイルをすぐに生成できます。以下を指定するだけです:

gcc test.c -fdump-tree-all-graph

そして、すでにフォーマットされたドットファイルがたくさんあります:

test.c.008t.lower.dot
test.c.012t.cfg.dot
test.c.016t.ssa.dot
... etc ...

このオプションでは、必ず新しいバージョンの GCC を使用してください。

于 2013-04-04T06:29:03.867 に答える