問題タブ [call-graph]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
pascal - ターボパスカルプログラムのコールグラフ
私は18歳のパスカルプログラムのメンテナンスを行っています。すべてがどのように組み合わされているかを理解するために、コールグラフを描きたいと思います。ただし、パスカルソースのコールグラフを描画できるソフトウェアは見つかりません。私は現在TurboPascal7を使用していますが、他のPascalコンパイラの機能についてはわかりません。
doxygen - doxygenで呼び出しグラフと呼び出し元グラフをマージするにはどうすればよいですか?
と を にCALL_GRAPH
設定CALLER_GRAPH
しYES
、doxygen は喜んで呼び出しグラフと呼び出し元グラフの両方を生成しますが、これら 2 つのグラフを単一の「フロー」グラフにマージするコマンドまたはトリックはありますか?
つまり、の代わりにa->B
、B->c
どうすれば取得できa->B->c
ますか?
java - Java単体テスト実行時のメソッド呼び出し一覧
単一の JUnit テストからどのメソッドが呼び出されているかを知る必要がある状況があります。たとえば、次の擬似コードがあるとします。
UnitTestクラスのメソッド呼び出しは、次の順序に従います (ただし、私の目的では、順序を保持する必要も、呼び出し元のメソッドを知る必要もありません)。
- UnitTest.main
- サークル.サークル
- Circle.getArea
- Circle.getRadius
基本的に、JUnit テストでプログラムのどの部分が実際に実行されているかを知りたいのです。これを動的に把握できると思いますが、ツールやアプローチを見つけるのに苦労しています。私が見つけたいくつかのツールの主な問題は、それらが非常に視覚的であることが多いことです (必要なデータを抽出するには、ユーザーの操作が必要です)。GUI の側面がなくても、メソッド (xml、テキストなど) のリストだけを取得できるものを探しています。最後に、スクリプト アプローチを使用して、テスト スイートに対してこれを自動化しようとしています。
私が使用することを考えているアプローチは、次のいずれかです。
- Java エージェントを使用して、すべてのメソッド呼び出しでclass.methodを出力します。
- このようなアスペクトを使用したトレース
すでにこれを行うツールがあれば、それは素晴らしいことです。そうでない場合、指定したアプローチのいずれかを使用して問題を解決しようとしているように見えますか?
ヘルプ/提案をいただければ幸いです。
UPDATE-SOLVED 次のコマンドで Emma を使用して、メソッド呼び出しの情報を抽出することにしました (0% のカバレッジを超えるメソッドのレポートを解析する必要があるだけです)。
parsing - コードの解析とコール グラフの描画に適した言語は何か
いくつかの C++/C コードを解析し、そこから図 (コール グラフによく似たもの) を描画するというアイデアがあります。しかし、私は静的な絵 (いくつかの名前付きのボックス) 以上を描くことができますが、エンドユーザーがボックスを調整できるように、ボックスがリレーショナル (接続) であることを望んでいますが、ボックスを接続する線はまだそこにあります。
つまり、最終的な目標は、ユーザーがダイアグラム内の要素を調整することでダイアグラムを操作できるようにすることです。
アニメーションの言語/フレームワーク サポートのより高度な機能も望まれます。
そして、このアイデアに最適な言語 (C++ (Microsoft MVC フレームワーク?) または python など) を探してここに投稿しています。プラットフォーム (Windows と Unix) も決定する必要があります。その点ではJavaも良い選択肢かもしれません..
ありがとう!
c++ - 実行時にc/c++プログラムの動的コールグラフを生成する
プログラムの実行を視覚化する場合、プログラムのコールグラフを取得することから始めると思います。
しかし、実行中にc / c ++プログラムのコールグラフをどのように取得しますか?
編集:説明、私は現在Linux上でg ++を使用して実行していますが、別のプラットフォームを使用している場合の解決策についても興味があると思います。
matlab - matlab src コードからのコール グラフ生成
約 500 個の matlab src ファイルの関数呼び出しグラフを作成しようとしています。複数の src ファイルに対して同じことを行うのに役立つツールが見つかりません。
ツールやプラグインに詳しい人はいますか?
そのようなツールが利用できない場合は、ドキュメントなしで 6000 行の matlab コードを読むことについての提案を歓迎します。
valgrind - ディスパッチャー関数の Kcachegrind/callgrind は不正確ですか?
kcachegrind/callgrind が奇妙な結果を報告するモデル コードがあります。一種のディスパッチャー機能です。ディスパッチャーは 4 つの場所から呼び出されます。各呼び出しは、実行する実際のdo_J
関数を示します(したがって、first2
呼び出しのみdo_1
などdo_2
)
ソース (これは実際のコードのモデルです)
でコンパイルgcc -O0
; コールグラインドvalgrind --tool=callgrind
; kcachegrindedkcachegrind
とqcachegrind-0.7
.
以下は、アプリケーションの完全なコールグラフです。do_J へのすべてのパスはディスパッチャーを通過します。これは適切です (do_1 は速すぎるとして隠されていますが、実際にはここにあり、do_2 に残されています)。
誰がそれを呼び出したかに注目しdo_1
て確認しましょう (この図は正しくありません)。
そして、これは非常に奇妙だと思いますが、すべてではfirst2
ありません。outer2
do_1
callgrind/kcachegrind の制限ですか? 重み付きで正確なコールグラフを取得するにはどうすればよいですか (すべての関数の実行時間に比例し、その子の有無にかかわらず)。
c++ - gprof - ファイルにコールグラフ データがありません
gprof を使い始めたばかりで、コール グラフを生成しようとしています。メイクファイルの設定に cmake を使用しており、プロファイリングを有効にするために CMAKE_EXE_LINKER_FLAGS = -gp を設定しています。私が有効にした cxx フラグは -g だけです。
次に、gmon.out ファイルで gprof を呼び出すだけです。
生成された出力ファイルには、呼び出し、自己 ts/呼び出し、および合計 ts/呼び出しがすべて空であるフラット プロファイルのみがあります。
さらに重要なことは、コールグラフを生成しないことです。gprof を実行してコール グラフを生成するときに -q を明示的に指定しようとすると、「ファイルにコール グラフ データがありません」と表示されます。
ここで何が間違っているのかわかりません。これを修正するための指針をいただければ幸いです。
ありがとう。
ctags - ctags を使用して呼び出し階層グラフを生成する
ctagsとcscopeを使用して呼び出し階層グラフを生成する方法を知っている人はいますか? vim ではなく、ターミナルでコマンドを実行し、出力を file にリダイレクトする必要があります。
multithreading - マルチスレッド C++ アプリケーション コール グラフ、マルチスレッド コード カバレッジを視覚化するツールは?
できるツールがあれば知りたいです。
- 大規模なマルチスレッド アプリケーションのコール グラフを視覚化するのに役立ちます。
- 具体的には、複数のスレッドが 1 つのコアでインターリーブする方法と、複数のコアで同時に実行する方法を確認したいと考えています。
- このツールは、可能性のある待機/デッドロック/競合状態を特定するのが理想的です。
最終的には、潜在的なマルチスレッドのバグを見つけるために、実行時にスレッドが相互にどのように相互作用するか (マルチスレッドに関するコード カバレッジ ツール) に関してコード カバレッジを行いたいと考えています。
質問を明確に説明していない場合は申し訳ありませんが、詳細を提供したいと思います。