方法 : 行レベルのサンプリング データを収集する
更新 : 2007 年 11 月
行レベルのサンプリングとは、排他サンプルを含む関数など、プロセッサ集中型の関数のコードで、プロセッサが大部分の時間を費やす必要のある場所を特定するためのプロファイラの機能です。
概要
行レベルのサンプリングでは、プログラムのコール スタックを定期的に走査し、その結果を集計します。これらの結果では、サンプルの取得時にプロセッサが実行していた命令が示されます。次に、排他サンプルについて収集されたデータが分析され、コードの行と命令ポインタ (IP) を識別します。
行レベルのサンプリングは、ネイティブ コードだけでなく、マネージ コードにも使用できます。このデータが表示されるパフォーマンス レポートには、行ビューおよびモジュール ビューがあります。
文字の開始または終了情報は、ネイティブ コードでは使用できません。複数行ステートメントの場合、ネイティブ コードでは、行の開始情報を使用できず、行の終了情報だけを使用できます。
使用できるデータ
使用できる行レベルのサンプリング データには次の情報が含まれます。
関数名。
関数アドレス。
行の開始情報 - サンプリングされるコードの行番号。
行の終了情報 - ソースの終了行番号。通常、これは "行の開始情報" のデータと同じです (1 つのプログラム文が複数のソース コード行にまたがっている場合を除く)。
文字の開始情報 - 集約サンプルの開始列。通常、これは 0 です (1 つの行に複数のプログラム文が含まれる場合を除く)。
文字の終了情報 - 集約サンプルの終了列。
IP - 集約サンプルが取得されたアドレス (IP ビューのみ)。
[モジュール] ビューでは、関数に行レベルの統計が含まれている場合、統計は各関数の下に入れ子になっています。さらに、各行で入れ子になっている IP レベルの統計が表示されます。
マネージ コードの行レベルのサンプリングの無効化
既定では、行レベルのサンプリングは有効になっています。マネージ コードの行レベルのデータ収集を無効にするには、次のいずれかを実行します。
プロファイリングの前に、「VSPerfCLREnv /samplelineoff」と入力します。これは、アプリケーションとサービスの両方に影響します。
または
アプリケーションの起動時に、「VSPerfCmd /lineoff <other arguments>」と入力します。