2013-04-03 28 views
10

私はその後、私は.PNGファイルまたは同様にそれを表示するための.dotファイル(Graphvizからによって生成されたファイル)にはgccによって生成された抽象構文木をダンプしたい、質問のタイトルは自明だと思います。私はそれを行うことができる方法はありますか?事前にgccによって生成された抽象構文木を.dotファイルにダンプするにはどうしたらいいですか?

感謝:)

答えて

17

GCC内部VCGのサポートに

  1. を使用して、両方の二つのステップ

    1. を含む二つの方法がありますが、あなたのコード(たとえばtest.cのを)コンパイルvcgダンプ付き

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

    2. 生のダンプを使用してコンパイル

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

  2. VCGからドットの出力を得るために、任意のサードパーティ製のツールを使用して、(this useful articleのように)ドットファイルを形成するために、いくつかのスクリプトとそれらを前処理する

どちらの方法は、自分の良い面と悪い面を持っている - 最初にあなたは本当にBU、GIMPLE翻訳前のASTの唯一のダンプを取得することができますそれは簡単です。 2番目の場合は、任意の生のダンプをドット形式に変換できますが、オーバーヘッドであるスクリプトをサポートする必要があります。

好きなものはお好みです。


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の新しいバージョンをご使用ください。

+0

ありがとうございました – asdrubalivan

+2

GCC 4.8.2は 'cc1:error:認識できないコマンドラインオプション '-fdump-tree-vcg'と答えています。 – Ali

+0

通知ありがとう、更新された回答。 GCCの新しいバージョンは事をもっと簡単にします。 –

関連する問題