2010-12-28 18 views
3

GCC/G ++に出力解析のオプションがありますか?GCCコードの統計情報/解析

前のコードと新しいコード(サイズ、クラス/構造のサイズ)との違いを比較できることは便利です。これらは比較のために前の出力と異なる場合があり、多くの目的に役立ちます。

このような出力分析が利用できない場合、そのような情報を取得する最良の方法は何ですか?

+0

当社は、C/C++言語のコード解析の分野において、カスタマイズされたソリューションを作成するサービスを提供しています。お問い合わせ先:http://www.viva64.com/en/services/ –

+0

プログラムには、興味のあるものがたくさんあります(「多くの目的」、たとえば「コードブロックの途中のレジスタ圧最も内側のループを含むか?あなたはどのようなものを選ぶでしょうか、GCCにどのように設定するのですか?またはあなたは*これらの2つだけを欲しいですか?もしそうなら、なぜこれらが最も興味深いのですか? –

答えて

3

GCCXMLは、シンボルと型宣言データをXML形式でダンプする(GCC形式)です。それはあなたが気に入っている "特性"を持っているかもしれないし、持っていないかもしれない。

特定の情報が必要な場合は、GCCを曲げて作成することができます。 GCCはあなたのお気に入りのプロパティダンプではなく、コンパイラになりたいと思っており、これは大きくて複雑なツールなので、この学習曲線は長くて難しいでしょう。コンパイラはどこかでそれを計算しなければならないので、構造体宣言に関する情報とともに格納するのが妥当と思われるので、おそらく "struct size"という何らかのチャンスがあります。私はコマンドラインスイッチのいくつかが何らかの情報を出力し、それらをエミュレートしようと考えるかもしれないことを期待しています。あなたが "ループ内のレジスタの圧力"のような本当に奇妙なプロパティを必要とするなら、コンパイラの内部に深く到達する必要があります。

一般的なプロパティをソースコードから派生させたい場合は、強力なCフロントエンドが組み込まれた言語処理フレームワークを使用することをお勧めします。 Clangは1です。おそらく、GCCの学習曲線に似た学習曲線があるかもしれませんが、あなたのような仕事のために設計された方が良いと言われています。私はこれに関して特別な経験はありません。

DMS Software Reengineering Toolkitは、このようなタスクをサポートするように明示的に設計されています。完全な構文解析ツリーを構築するためのAPI、識別子を宣言のポイントに関連付けるシンボルテーブル、実際のタイプ、フルコントロールとデータフローの分析など、完全なC Front Endを持っています。 DMSにも同様の特性を持つ完全なC++ Front Endがありますが、まだフロー分析情報は提供されていません。 DMSでは、この計算の上に任意のコード(任意のプロパティ)を書くことができます。

関連する問題