2011-08-23 12 views
3

誰かがタスクのための良いツールを見つけることを手助けできるかどうかだけは興味があります。 私はC/C++でWin32からLinuxに移植する必要がある大きなプログラムを持っています。プログラムの内部から「ラッピング」(すなわち最もOSに敏感な)部分が正常に分離されたので、このタスクはその「内部」を通るだけである。コンパイル時に問題が発生するものもあれば、マクロの使用法が厄介なものもあります。多くのマクロを含むC++プログラムの解析/デバッグ/移植

は、内部の大部分はこのようになります。基本的:

START_MAIN(...) 
    SOME_MACRO(...) 
    ANOTHER_MACRO(...) 
    WRITE_SOMETHING() 
END_MAIN() 

これは、C/Cは、Pascalのように見え++なりますが、「間違っているものを」把握しようとしている間にも、ひどい痛みの多くを提供します。

このような種類のソースを解析して問題の原因を突き止めるのに役立つツールはありますか?

私はこのプログラムの「コンパイル可能性」にゆっくりと近づいていますが、この(人工的に構造化された)混乱を見て助けてくれるものはどれも本当にです。

+1

あなたは良いことのようにパスカルを発音させます... – Blindy

+0

@Blindy:意図的ではありません:) – yatsa

答えて

0

Eclipse CDTはマクロを展開し、プリプロセッサによって生成される最終コードに到達するために必要なマクロ評価の数を表示します。

http://help.eclipse.org/galileo/index.jsp?topic=/org.eclipse.cdt.doc.user/concepts/cdt_c_whatsnew.htm

は、 "マクロの展開" のセクションを見てください。

+0

私はその解決策を検討します。おそらくいくつかのより高度なctags/cscope-kung-fuを使用すると、より広範な情報が得られるでしょうが、私はすぐにc..odeの山を修正する必要があります。そして、これで十分です - 私はまだ(簡単な)構文解析の聖杯があることを望んでいますが。共有ありがとう! :) – yatsa

1

コンパイル、出力、処理(つまり、カスタマイズ可能なC++パーサを探す)を手動で調整する必要がある場合は、まずはclangが良いツールです。場合

は、あなたはちょうどあなたがコンパイラフラグを使用することができ、(展開されたマクロで)前処理のコードを見てみたい:
MSVC:C++コンパイラフラグ(プロジェクトに/ Pを追加 - >プロパティ - > C/C++ - >コマンドライン)
GCC、クラン:-Eコンパイラフラグを追加

This question about preprocessing C++ codeはあなたが役立つかもしれないいくつかの答えが含まれています。

+0

前処理されたコードが読めない場合は、[GNUインデント](http://www.gnu.org /ソフトウェア/インデント/)。 –

+0

はい - 私はコンパイラフラグについて知っていますが、あまり有用ではありません。結果(前処理後)では、再び読みにくいコードのトーンが得られます。私はプログラムのロジック(このパスカルのような言語)と内部で問題を引き起こす可能性があるので、最良のツールは特定のマクロを展開/崩壊させる(vimプラグインですか?)と思っていました – yatsa

+0

コードに関する情報がそこにない場合、自動化されたツールはあなたを助けません。前処理といくつかのコード美化器の使用はいくつかの事を明らかにするのに役立つかもしれませんが、脳に組み込まれたヒューリスティックだけが大きなボールの泥を処理することができます。 –

関連する問題