1

私の質問は、次のようなものとは異なりますが、次のようなものとは異なります。

C++ をリバース エンジニアリングするためのツール (つまり、C++ クラスを表示するためのツール)

クラス ダイアグラムを探すよりも、呼び出しチェーンと依存関係を見つけて、見栄えの良いグラフを生成することに関心があります。

そのようなツールはありますか?私は、 cscopectagsが私がやりたいことの少しを実行できることを知っていますが、非常に低レベルのインタラクティブな方法 (一度に 1 つのクエリ) で行います。たとえば、API が与えられた場合、リーフに到達するまですべてのサブルーチン呼び出しパスを見つけて、それらを表示するなど、より自動化されたものが必要です。

これのためのツールはすでにありますか?バイナリレベルでそれを行うことは可能ですか? ライブラリ内のリバース エンジニアリング関数の依存関係 (.a、.so、.dll を入力として) のようなものですか?

編集:

ライブラリとモジュールのコードでも機能するようにしたいので、プロファイラーよりも静的分析ツールを好みます。

また、クロスプラットフォーム ソリューションを好みます。私は主に Mac を使用していますが、Linux または Windows 用のツールも興味深いものになるでしょう。

アップデート

推奨事項を調査した後、Doxygen が必要であると判断しました。呼び出し元と呼び出し先のグラフを提供し、静的分析、クロスプラットフォーム、および無料を使用します。

他のすべての推奨事項に感謝します。彼らは私の目をかなり開いた。

4

5 に答える 5

3

CppDepend は、タスクに対して非常に優れているように見えます。

ここに画像の説明を入力

http://www.cppdepend.com/

于 2013-02-23T17:08:28.163 に答える
2

Doxygen は呼び出し元と呼び出し先のツリーを表示できます:
doxygen

編集1:
Doxygen コール ツリーの例

于 2013-02-23T18:16:08.883 に答える
1

Windowsでは、を使用できますCodeTune。関数従属性を示すコールグラフが表示されます。

http://www.thewallsoft.com/codetune-documentation/

GNU / Linuxではgprof、このビジュアライザーを使用してコールグラフを作成できます

http://code.google.com/p/jrfonseca/wiki/XDot#Screenshots

于 2013-02-23T17:04:23.580 に答える
1

Windows でほとんどの C C++ および C# ライブラリを検出する DEPENDS アプリケーションを使用できます。
しかし、それでもチェーンを呼び出すことはありません...
ここにリンクがありますDEPENDS

于 2013-02-23T16:54:35.017 に答える
1

コメントから昇格。

callgrindツールで valgrind を使用してみましたか?

Valgrind はデバッグに役立ちますが、valgrind 内の callgrind ツールは、プロファイルを作成し、どの関数が他のどの関数を呼び出すかを知るのに非常に役立ちます。関数が呼び出す他のブロック内のブロックとして表示できるkcachegrindというビジュアル ツールが付属しています。

そして、それは完全に無料です。

ここに画像の説明を入力

于 2013-02-24T08:59:48.920 に答える