web-dev-qa-db-ja.com

コードフローを視覚化するツール(C / C ++)

C/C++コードを理解する作業を容易にするためのツールの提案はありますか?私たちは、他の人が書いたソフトウェアの大部分を継承したばかりであり、すぐにそれに慣れる必要があります。このタスクを簡素化するツールに関するアドバイスはありますか?

70
Dprado

SourceInsight および C++の理解 は、フローチャートを含むc/c ++コード分析のために入手できる最高のツールです。

28
aku

プロファイリングソフトウェアにより、どの関数が呼び出されたかがわかります。

Linuxを使用できる場合は、 KCachegrind を試してください。

9
Thorsten79

個人的には、デバッガーを使用しています。コードを実行して、その実行内容と、その実行が唯一の方法である場所を確認します。

ただし、(場合によっては)役立ついくつかのドキュメントジェネレーターで実行できます。良い例は doxygen です。

8
gbjbaanb

Doxygen は、EXTRACT_ALLオプションをオンにすると、マークアップを適用せずにコードからダイアグラムを生成するのに非常に適しています。 HAVE_DOT設定で生成されたダイアグラムを取得するには、 GraphViz がインストールされている必要があります。それをインストールし、DOT_PATHを空白のままにすると、Windowsでは正常に動作しますが、OS/Xでは、ドットツールの場所を直接指す必要があります。

ACM Queueには、doxygenとDTraceの使用について詳しく説明している優れた Code Spelunking の記事があります。

8
Andy Dent

Linux(KDE)を使用している場合は、cscopeユーティリティに基づいて構築されたKScope。私が今までに使用した(そして常に使用する)最高の方法は、なにかを変更しなければならない、または自分のニーズに合わせてどのAPIを使用するかという、なじみのないコードの巨大な部分を掘り下げることです。その機能には相互参照データベースがあり、これはさまざまな方法で検索できます。シンボルのすべての参照、そのグローバル定義、関数の呼び出し元/呼び出し先の検索などができます。組み込みのIDEと、コールグラフを表示する機能もあります。

5
dekkard

Doxygen graphvizを使用すると、特に準備していなくても、クラス関係図が得られます。

4
Douglas Mayle

エジプトのようなツールがいくつかあります http://www.gson.org/egypt/egypt.html 動作しますが、コードのコンパイルに使用される予想されるGCCバージョンと正確なバージョンが一致する場合のみコールグラフジェネレーター。 codevizについても同じことが言えます http://www.csn.ul.ie/~mel/projects/codeviz/

その他のオプションは、cachegrindモードで使用されるvalgrindです(kcachegrindプログラムから追跡できるコールグラフのタイプを生成します。

3
OldMan

しばらく前に Borland Together を使用し、コードからモデルを生成するというまともな仕事をしました。コードからシーケンス図を生成することさえできると思います。コードが混乱している場合は、モデルも混乱することに注意してください。そして、私が覚えているように、それは安くはありませんが、時々あなたは特別をキャッチすることができます。

1
Craig Tyler

個人的にVisual Studioデバッガーツールを使用しています。

「Caller Graph」機能が付属しているので、小さなボックスで内容を視覚化できます。また、コールスタックと通常の監視機能は通常、必要なすべてです

1
Eric

AspectBrowser もあり、Eclipse 3.4.0ではあまりうまく機能しません。

1
user23787

try AQtime 、呼び出されたすべての関数(およびかかった時間)を表示するプロファイリングツールです。分析の開始点と終了点を設定できます。 30日間の試用版があります。

1
rec

私はVisustinという名前のツールを試しましたが、これはグラフィカルにはあま​​り優れていませんが、それが言うことを実行します:コードからのフローチャート。 http://www.aivosto.com/visustin.html

1
rjdthegreat

Rational QuantifyはNiceコールグラフも表示します。

1
QBziZ

doxygen は、関係グラフも生成する無料のドキュメント生成ツール(Javadocに類似)です。

0
luke

Doxygen、それの良いところは、クラスの循環依存性の観点から、い/良いことをあなたのコードに知らせることです。そのため、コードをリファクタリングする必要がありますが、気に入らないかもしれません:-)

0
rptony

Slickeditは、知らないコードの大きなブロックをナビゲートするのに最適です。タグ機能を使用すると、機能的にコードを処理できます。どのファイルが含まれているかを処理する必要はありません。

理解できないメソッド、クラス、または変数に到達したら、タグをプッシュするだけでそのコードに移動し、コードを確認してから、タグをポップします。 (キーストロークにバインドされているため、非常に高速です)

Find-referencesを使用して、その関数/変数が使用されている場所を確認することもできます。

どのファイルが入っているのかを把握する必要がなく、時間を大幅に節約できます。

0
boatcoder