問題タブ [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.
c++ - 少しのプロファイリング情報でプログラムの呼び出しグラフを取得する方法
与えられた C++ プログラムがどのように機能し、どこで最も多くの時間を費やしているかを理解したいと考えています。
そのために、最初に使用してから写真を取得しようとしましgprof
たgprof2dot
が、結果は時々醜いです.
普段はこれをどのようにしていますか?より良い代替案をお勧めできますか?
PD オープン ソース ソリューションはどれですか (できれば Linux または Mac OS 向け)X?
c# - Visual BasicとC#の両方で開発されたアプリケーションのAST生成
私は現在、Visual BasicとC#の両方で開発された1つのアプリケーションを理解しています。コードが約50KLOCであるため、コードの実行は困難になっています。そこで、AST(抽象構文木)の生成を計画しています。両方の言語を一緒に生成することは可能でしょうか。
少なくともコールグラフの生成は役に立ちます(ただし、両方の言語で機能するツールは見つかりません)
この質問がわかりにくい場合はお知らせください。
AdvanceDevに感謝します
call-graph - amd プロセッサ上の Intel Vtune
Intel Vtune Analyzer 9 をインストールして、AMD Turion X2 TL-58 プロセッサを搭載した Windows 7 PC 上の win32 アプリケーションからコールグラフとカウンター モニター データを取得しましたが、次のようなエラーが表示されます。適切に識別されましたが、データ収集は利用できません。」AMD プラットフォーム用の同様のツールはありますか?
c - コールグラフはどのように関数ポインタを解決しますか?
私はperlスクリプトを使用してCのコールグラフプログラムを実装しています。'objdump'の出力を使用して関数ポインタのコールグラフを解決する方法を知りたいですか?さまざまなコールグラフアプリケーションが関数ポインタをどのように解決しますか?関数ポインターは実行時に解決されますか、それとも静的に実行できますか?
編集 コールグラフは、プログラムの静的評価のサイクルをどのように解決しますか?
algorithm - 古いデバッグ バージョンのシンボルを使用してストリップされたバイナリをシンボル化する (不正確なグラフ マッチング)
私はバイナリAを持っています。これは、何年も前にビルドされたシンボルを伴うデバッグビルドです。私はバイナリBも持っています。これは、シンボルを伴わないリリースビルドであり、はるかに最近のものです。バイナリAのシンボルをバイナリBの潜在的な候補に一致させる最も効率的な方法を探しています。
デバッグ ビルドがかなり大きく (より多くの入力検証を行い、より多くのものを に出力するstderr
など)、関数は常に時間の経過とともに変化することを考えると、個々の関数をフィンガープリントしようとすると時間が無駄になると思います。
したがって、私は決定しました - 非常に何もないので、間違ったツリーを吠えている可能性があります - 関数をフィンガープリントする最良の方法は、両方のバイナリの呼び出しグラフを作成し、頂点を一致させることです (つまり、機能)。
すでにいくつかの前処理を行っているため、次のデータ構造があります。
重要な注意点は、バイナリA の関数 "0" とバイナリBの関数 "0" の間に対応がないことです。これらは、各バイナリの各関数に割り当てた任意の ID です。
次のステップは、私を混乱させるものです。私のアルゴリズム フーは非常に弱く、先に進む賢い方法が思い浮かびません。私の(非常に限られた)理解は、これを解決するために、何らかの形式の不正確なグラフマッチングを採用したいということです。言い換えれば、どのマッピング Ai -> Bi が 2 つのコールグラフの類似性を最大化するでしょうか?
バイナリAには追加のデバッグ機能があり、プログラムが時間の経過とともに進化するという明らかな事実を考えると、完全に一致するものはおそらくありません。理想的には、次の形式の出力が必要です。
現実的には、候補が1つだけでランキングが出なくてもよかったのですが、夢は叶います。
SO-goers は、私がどこから始めるべきかについて考えを持っていますか?
sql-server-2008 - SQL Server 2008 R2のストアドプロシージャのロジックを視覚化するのに役立つ無料のツールはありますか?
ストアドプロシージャのコールグラフをプロットできるようにしたいと思います。私はすべての詳細に興味があるわけではなく、動的SQLには関心がありません(ただし、それを検出してスキップするか、そのようにマークするのはクールです)。
サーバー名、データベース名、ストアドプロシージャ名、「呼び出しツリー」を指定して、ツールでツリーを生成したいと思います。これには次のものが含まれます。
- 親ストアドプロシージャ。
- 呼び出し元の子として呼び出されている他のすべてのストアード・プロシージャー。
- ストアドプロシージャの子として変更(更新または削除)されているすべてのテーブル。
うまくいけば、私が何を求めているのかが明確になります。そうでない場合は、質問してください。これができるツールがないのなら、自分で書いてみたいと思います。私が選んだ言語はPython2.6であり、可能な限り標準ライブラリを使用したいと思います。助言がありますか?
編集:報奨金の目的で警告:SQL構文は複雑です。たとえそれがばかげているように見えても、あらゆる種類のSQL2008を解析できるものが必要です。コーナーケースは禁止されていません:)
EDIT2:私が欠けているのがグラフィックスだけなら大丈夫でしょう。
visualization - コール グラフを文書化/視覚化するツールはありますか?
最近、膨大な量のコードを扱うプロジェクトに参加したので、コール グラフを介していくつかのフローを文書化し、視覚化して、すべてがどのように適合するかをよりよく理解できるようにしたいと思います。これは、私の理想的なツールで見たいものです。
- すべてのノードは関数/メソッドです
- ある関数が別の関数を呼び出すことができる場合、ノードは接続されます
- 呼び出しが行われる詳細な条件の間にあるオプションの四角いボックス (または、ツールチップのようにカーソルを合わせることができるラベル アイコン)
- また、パラメーターを説明するエッジのアイコン
- ノードにカーソルを合わせると、説明が表示されます
- ノードが疑似コードを表示するためのオプションのアイコン
- シナリオ/ドメイン ビュー - 特定のユース ケースの完全な図のサブセットを表示
- スライド ビュー モード - フレームごとに、現在実行中の機能が強調表示されます
- 画面上の混乱を減らすために何を表示するかについての多くのオプション
このようなツールをインタラクティブに使用することが重要です。私は、Graphviz タイプのソリューションを探しているわけではありません。グラフ全体のサブセットのビューを形成する機能は非常に便利です (おそらく、重要でないクラッタはグレー表示されます)。ソース コードからの自動生成は必要ありません。手動で入力してください。
ほぼマインドマップ。
それは理にかなっていますか?そのようなツールをご存じない場合でも、役に立つと思いますか? (いつかそのかゆみを掻きに行くことにした場合に備えて!)
r - R でコール グラフを生成する
大量の関数を含む不十分な形式のモノリシック R コードの大きな塊が与えられたので、どの関数がどの関数を呼び出すかを調べたいと思います。
私は roxygen の @callGraph のものを使用できると思っていましたが、a) コードはパッケージに含まれている必要があり、これはこのコードでは頭痛の種になり、b) シンプルな環境で実行しても機能しないようです。私のパッケージ。Rgraphviz の依存関係のためにコール グラフの生成が無効になっているという Roxygen の作成者の 1 人からの投稿を見ましたが、コードはそこにあります。ともかく。
foo が bar、baz、および qux を呼び出し、qux が quux を呼び出すことをすばやく解決するためのより良い方法を知っている人はいますか?
編集: R のプロファイリング システムに基づくソリューションは、実際にコードを実行できると仮定すると、優れています...ファイル内の半分は実行されず、それが何をするのかわかりません...静的分析は多すぎます期待しているのだろう。
編集 2: Roxygen の呼び出しグラフは、関数の式の再帰的降下と is.callable のチェックに基づいて、静的分析を行うようです。これを任意の関数で実行できるといいですね...明日これで遊ぶかもしれません...
java - Javaコールグラフの静的解析
私がやりたいのは、一連の Java クラスをスキャンし、抽象クラスの特定のメソッドからのすべてのメソッド呼び出しをトレースし、そのコンテキスト内で、何らかの操作を実行するすべてのコードのリストを作成することです (この場合はインスタンス化します)。特定のクラスのインスタンス)。知りたいのは、行番号と、指定された引数です。
BCEL を調べ始めましたが、コール グラフ トレースが組み込まれていないようです。オーバーロード、型シグニチャ、ポリモーフィック ディスパッチを適切に行うのは難しいかもしれないので、自分で書くのをためらっています。
ツールまたはサンプル コードが存在することを半分期待していましたが、まだ何も見つかりませんでした。車輪を再発明しようとしているような気がします。しかし、私がそうするなら、それはオープンソースのホイールになり、GitHub で利用可能になります ;-)
PS: 既存の質問「Java コール グラフを生成する方法」が見つかります。同じように聞こえますが、私が必要としているものではありません。
java - Java プロジェクトのコール グラフを生成する方法
アプリケーションのグローバル コール グラフを生成することはできますか?
基本的に、アプリケーションの最も重要なクラスを見つけようとしています。
Javaのオプションを探しています。
Doxy Gen を試してみましたが、継承グラフしか生成しません。
私の現在のスクリプト: