方法: コマンド ラインを使用してスタンドアロンのネイティブ アプリケーションにプロファイラーをアタッチし、同時実行データを収集する

ここでは、Visual Studio プロファイリング ツールのコマンド ライン ツールを使用して、実行中のスタンドアロンのネイティブ (C/C++) アプリケーションにプロファイラーをアタッチし、プロセス データおよびスレッド競合データを収集する方法について説明します。

注意

プロファイリング ツールのコマンド ライン ツールは、Visual Studio インストール ディレクトリの \Team Tools\Performance Tools サブディレクトリにあります。 64 ビット コンピューター上では、64 ビット バージョンのツールと 32 ビット バージョンのツールの両方を使用できます。 プロファイラー コマンド ライン ツールを使用するには、[コマンド プロンプト] ウィンドウの PATH 環境変数にツールのパスを追加するか、コマンド自体にそれを追加します。 詳細については、コマンド ライン ツールへのパスの指定に関する記事を参照してください。

プロファイラーをアプリケーションにアタッチしている間はデータ コレクションを一時停止し、完了後に再開できます。 プロファイル セッションを終了するには、アプリケーションへのプロファイラーのアタッチを解除し、プロファイラーを明示的に終了する必要があります。

実行中のネイティブ アプリケーションへのプロファイラーのアタッチ

実行中のネイティブ アプリケーションにプロファイラーをアタッチするには

  1. コマンド プロンプトに次のコマンドを入力します。

    VSPerfCmd /start:concurrency

    /start:concurrency オプションと共に、次の表の任意のオプションを指定できます。

    オプション 説明
    /user :[Domain\]Username プロファイラーへのアクセスを許可するアカウントのオプションのドメインとユーザー名を指定します。
    /crosssession 他のログオン セッションにおけるプロセスのプロファイリングを有効にします。
    /wincounter : WinCounterPath プロファイリング実行中に収集する Windows パフォーマンス カウンターを指定します。
    /automark : Interval /wincounter との組み合わせでのみ使用します。 Windows パフォーマンス カウンター コレクション イベントの間隔をミリ秒単位で指定します。 既定値は 500 です。
    /events : Config プロファイリング実行中に収集する ETW (Event Tracing for Windows) イベントを指定します。 ETW イベントは独立した (.etl) ファイルに収集されます。
  2. 次のコマンドを入力して、対象アプリケーションにプロファイラーをアタッチします。

    VSPerfCmd /attach :{PID|ProcName}

    PID には、対象アプリケーションのプロセス ID を指定します。 Windows タスク マネージャーで、実行中のすべてのプロセスのプロセス ID を参照できます。

データ収集の制御

対象アプリケーションの実行中は、VSPerfCmd.exe のオプションを使用してファイルへのデータ書き込みを開始および停止することにより、データ収集を制御できます。 データ収集を制御することにより、アプリケーションの起動や終了など、プログラム実行の特定部分のデータを収集できます。

データ収集を開始および停止するには

  • 次の表に示すオプションの組み合わせにより、データ収集を開始および停止します。 個別のコマンド ラインで各オプションを指定します。 データ収集のオンとオフは複数回切り替えることができます。

    オプション 説明
    /globalon /globaloff すべてのプロセスのデータ収集を開始 (/globalon) または停止 (/globaloff) します。
    /processon : PID /processoff : PID プロセス ID (PID) で指定されたプロセスのデータ収集を開始 (/processon) または停止 (/processoff) します。
    /attach :{PID|ProcName} /detach[:{PID|ProcName}] /attach は、プロセス ID (PID) またはプロセス名 (ProcName) で指定したプロセスのデータ収集を開始します。 /detach は、指定されたプロセスのデータ コレクションを停止します。プロセスが指定されていない場合は、すべてのプロセスのデータ コレクションを停止します。

プロファイル セッションの終了

プロファイル セッションを終了するには、プロファイラーがデータ収集を停止している必要があります。 アプリケーションを終了するか VSPerfCmd /detach オプションを呼び出すことによって、サンプリング メソッドを使用してプロファイリングが実行されているアプリケーションからのデータ収集を停止できます。 次に、VSPerfCmd /shutdown オプションを呼び出して、プロファイラーをオフにし、プロファイル データ ファイルを閉じます。

プロファイル セッションを終了するには

  1. 対象のアプリケーションを終了するか次のコマンドを入力し、アプリケーションからプロファイラーをデタッチします。

    VSPerfCmd /detach

  2. 次のコマンドを入力してプロファイラーを終了します。

    VSPerfCmd /shutdown