コールグラフビューの基本

コールグラフビューでは、コード階層が視覚的に表現され、各関数はその関数が呼び出された場所にレイアウトされ、呼び出し元と呼び出し先の数は矢印で結ばれます。矢印の方向は、どちらの関数が呼び出し元の関数であるかを示しています。つまり、矢印の終点側にある関数は呼び出先の関数、矢印の始点側にある関数は呼び出し元の関数です。このトピックでは、コールグラフのレイアウトについて詳しく説明すると共に、この階層の仕組みと関数の左右に表示される記号の意味についても概要を示します。

Show/hide階層の仕組み

コールグラフビューに表示される関数の階層は、実行時にサンプリングされたコールチェインに基づいて作成されます。

Note

コールグラフビューは、[キャプチャオプション]ダイアログボックスを使用して設定できるコールスタックアンワインドオプションに依存してます。コールスタックアンワインドの詳細については、キャプチャオプションを参照してください。

呼び出し元の関数は一番左の列に配置され、呼び出し先の関数はその右の列に配置されます。これらの呼び出し先関数によって呼び出される関数、さらにその右の列に配置され、最終的にすべての関数が配置されるまで、これが繰り返されます。この配置動作には注意すべき点が 1 つあります。階層の複数のレベルで呼び出される関数がある場合、この関数は、コールグラフビュー内のできる限り左に配置されます。

例えば、関数 main が関数 a を呼び出し、さらにこの関数 a が関数 b を呼び出す場合、階層は以下のようになります。

Figure 40. シンプルなコール階層

シンプルなコール階層

main が関数 a だけでなく、関数 b も呼び出す場合、関数 b は階層内の上位、つまり main の近くに配置されます。以下の図を参照してください。

Figure 41. 複数の呼び出しを持つコール階層

複数の呼び出しを持つコール階層

コールグラフビューに表示されているコール階層はシンプルですが、実際のアルゴリズムでは、これらの図に示すものよりはるかに複雑な階層が述されます。コールグラフビューでは、クモの巣状のコール矢印として視覚的に表現される接続をすべて表示するのではなく、シンプルな方法基づいてコールラインを引くべきかどうかが決定されます。

Show/hide呼び出し元と呼び出し先の記号

呼び出し元関数が呼び出し先関数と同じ列または呼び出し先関数の左または右の列にある場合は、呼び出し元から呼び出し先までコール矢印が引れます。一方、呼び出し先関数が呼び出し元関数の左の 2 列以上離れた場所にある場合は、呼び出し元関数の左と呼び出し先関数の右に記号が加されます。この記号の中に表示される数字は、その記号が表している呼び出し元関数または呼び出し先関数の数です。

Figure 42. 呼び出し元の記号

呼び出し元の記号

呼び出し元または呼び出し先の記号を右クリックすると、そこに含まれているすべての関数が表示されます。この中から関数を 1 つ選択して、コールグラフビューの中央に配置します。こうすることにより、呼び出し元と呼び出し先のすべての関数に引き続き容易にアクセスできると同時に階層内の複数の層にまたがるコール矢印を表示しなくすることができます。

Show/hideミニマップ

階層が大きすぎて Eclipse のエディタセクションに収まりきらない場合は、コールグラフビューの左下隅にあるミニマップを使用すると、コールグラフビュー内を簡単に移動できます。

Figure 43. コールグラフのミニマップ

コールグラフのミニマップ

ミニマップ内でドラッグ可能なビューエリアの外側にカーソルを置くと、カーソルが十字線に切り替わります。ミニマップ内をクリックすると、リックした場所がマップの中心になります。ミニマップ内のドラッグ可能エリアボックスの上にカーソルを置くと、カーソルが手のマークに切替わり、ビューエリアをクリックしてドラッグできるようになります。この方法でビューのパン操作を行うと、スクロールバーを使わずに階層内のセクションをすばやくスキャンできます。

ミニマップ内のオブジェクトの色分けは、コールグラフビューそのものに含まれている関数と同じです。階層内で濃い赤の関数は、ミニマップで濃い赤で表示されます。そのため、ミニマップを使用してボトルネックをすばやく特定できます。階層で選択されている関数はミニマップでもい青で表示されます。

ミニマップを非表示にするには、ツールバーのドロップダウンメニューの左側にある[ミニマップを非表示]ボタンを使用します。

Show/hide色分け

コールグラフビューでは、合計サンプル数に基づいて関数を色分けしているため、重要な関数をすぐに特定できるようになっています。濃い赤か薄い黄色までの色が使用され、赤は最大値、黄色は最小値を示します。これらの色はミニマップで簡単に識別できるため、重要な関数にすばやスクロールすることができます。

Show/hide選択動作

階層で任意の関数を左クリックすると、その関数が選択されます。これにより、長方形が濃い青になるだけでなく、すべての矢印の色も灰色からに切り替わるため、選択した関数がどの関数と接続しているかが一目でわかります。

Figure 44. 選択された関数

選択された関数

関数を選択すると、その関数と接続している呼び出し元または呼び出し先の記号も灰色から黒に切り替わります。

Show/hide関連項目

Copyright © 2010-2011 ARM. All rights reserved.ARM DUI 0482FJ
Non-ConfidentialID020712