次の方法で共有


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

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

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

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

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

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

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

  • 静的インストルメンテーションでは、ファイルを特定の順序で展開する必要があり、ツールがファイルの場所を認識できない場合があります。 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 以降では、インストルメンテーション ツール、C/C++ のサポートに VSInstr を使用します。 VSInstr は、コマンド ライン シナリオにも使用され、.NET Framework および C/C++ アプリで機能します。 詳細については、次の記事を参照してください。