Oracle® Solaris Studio 12.4: パフォーマンスアナライザ

印刷ビューの終了

更新: 2015 年 1 月
 
 

呼び出しスタックとプログラムの実行

呼び出しスタックは、プログラム内の命令を示す一連のプログラムカウンタ (PC) アドレスです。リーフ PC と呼ばれる最初の PC はスタックのいちばん下に位置し、次に実行される命令のアドレスを表します。次の PC は、リーフ PC を含む関数の呼び出しのアドレスです。次の PC はその関数の呼び出しのアドレスであり、このような関係がスタックの先頭に達するまで続きます。こうしたアドレスはそれぞれ、復帰アドレスと呼びます。呼び出しスタックの記録プロセスでは、プログラムスタックから復帰アドレスが取得されます。これは、スタックの展開と呼ばれています。展開の失敗については、不完全なスタック展開を参照してください。

呼び出しスタック内のリーフ PC は、この PC が存在する関数にパフォーマンスデータの排他的メトリックを割り当てるときに使用されます。スタック上の各 PC は、リーフ PC も含めて、その PC が存在する関数に包括的メトリックを割り当てるために使用されます。

ほとんどの場合、記録された呼び出しスタック内の PC は、プログラムのソースコードに現れる関数に自然な形で対応しており、パフォーマンスアナライザが報告するメトリックもそれらの関数に直接対応しています。しかし、プログラムの実際の実行は、単純で直観的なプログラム実行モデルと対応しないことがあり、その場合は、パフォーマンスアナライザの報告するメトリックが混乱を招くことがあります。こうした事例については、プログラム構造へのアドレスのマッピングを参照してください。