Visual Studio でのインストルメンテーション (C#、Visual Basic、C++、F#)

この記事では、正確な呼び出し回数と呼び出し時間を収集するために使用される、Visual Studio のインストルメンテーション ツールについて説明します。

インストルメンテーションには次の 2 種類があります。

  • 静的。実行前にプログラムのファイルを変更します (VSInstr)

  • 動的。ファイルを変更しない動的プロセスを使用します。 ファイルをメモリに読み込み、インストルメンテーション情報を収集するように変更します。 動的インストルメンテーション ツールを使用すると、より正確な情報が得られますが、プログラムのより小さな部分についてです。 コードの小さなセクションを調査できます。

動的インストルメンテーションは次の理由で役立ちます。

  • 静的インストルメンテーションでは、厳密な名前の署名が中断されます。 動的インストルメンテーションでは、実行時にインストルメンテーションが発生するため、この問題は回避されます。

  • 静的インストルメンテーションでは、ファイルを特定の順序でデプロイする必要があり、ツールがファイルの場所を認識できない場合があります。 VSInstr を手動で実行する必要があります。 新しいインストルメンテーション ツールでは、ファイルを見つける必要がありません。 複雑なプログラムでは、すべてのファイルを見つけることは困難で手動のプロセスになる可能性があります。

インストルメンテーションとサンプリング

プロファイルに関しては、データを収集する 2 つのメカニズムがあります。 インストルメンテーションを使用した収集またはサンプリングを使用した収集。 詳細については、「パフォーマンス収集方法について」を参照してください。

動的インストルメンテーション ツール

インストルメンテーション - Visual Studio 2022 バージョン 17.5 以降では、インストルメンテーション ツールにより、.NET Core、.NET 5 以降、および .NET Framework に動的インストルメンテーションが提供されます。 このツールにより、インストルメンテーション シナリオに最適なパフォーマンスが提供されます。 パフォーマンス プロファイラー (Alt + F2 キー) を使用して、このツールにアクセスします。 詳細については、「アプリケーションをインストルメント化する」を参照してください。

Visual Studio 2022 バージョン 17.6 以降では、インストルメンテーション ツールにより C/C++ もサポートされていますが、静的インストルメンテーション (VSInstr) を使用します。

コマンドラインからこのツールを使用するには、コマンドラインからのアプリのプロファイリングに関するページを参照してください。

インストルメンテーション - Visual Studio 2019 バージョン 16.9 以降では、インストルメンテーション ツールにより、.NET Core、.NET 5 以降、および .NET Framework (C/C++ 以外) に動的インストルメンテーションが提供されます。 このツールでは、動的インストルメンテーションをサポートするバージョンの VSInstr.exe が使用されます。 パフォーマンス プロファイラー (Alt + F2 キー) を使用して、このツールにアクセスします。 DLL の場合は、代わりにコマンド ライン ツール (VSInstr) を使用する必要があります。

静的インストルメンテーション ツール

VSInstr - Visual Studio 2022 バージョン 17.6 Preview 2 以降、インストルメンテーション ツールでは、C/C++ サポートに VSInstr を使用します。 VSInstr はコマンドライン シナリオにも使用され、.NET Framework と C/C++ アプリでも機能します。 詳細については、「プロファイラー コマンド ラインを使用してスタンドアロン アプリケーションの詳細なタイミング データを収集する」を参照してください。