次の方法で共有


プロファイリング エラーのトラブルシューティングと問題の修正

この記事では、Visual Studio でパフォーマンス プロファイラーを使用したり、パフォーマンス プロファイラーから十分なデータを取得したりできないようにする最も一般的なエラーの解決策を示します。

結果なし

エラー: "現在のフィルター セットにデータがありません"

diagsession ファイルを開くと、ネイティブ コードを非表示にしたり、ユーザー以外のコードを非表示にしてトレースを理解しやすくするなど、特定のフィルターが適用されます。 さらに、 時間の選択スレッドなど、適用できる他のフィルターがあり、表示されるデータをさらに絞り込むことができます。 表示するデータが残っていない方法でこれらのフィルターを適用すると、この警告が表示されます。

修正方法

  • 時間選択にデータが含まれるようにします。 データの上のグラフで時間の選択を変更した場合は、[ 選択のクリア ] を選択してリセットします。
  • 次に、データがまだない場合は、すべてのカテゴリとスレッドがそれぞれのドロップダウンで有効になっていることを確認します。
  • プロファイリングするアプリケーションがネイティブ コードの場合は、[設定] ドロップダウンで [ネイティブ コードの表示] オプションを有効にしてください。
  • まだデータがない場合は、収集したトレースが短すぎてデータが存在しない可能性があります。 データを収集する対象のプログラムが(1 秒未満) あまり速く完了していないことを確認します。

外部コードを表示する」も参照

結果が完了するまでに長い時間がかかる

収集後にヒープを分析すると読み込みに時間がかかると思われる場合は、待機時間の問題を解決するのに役立つ次の解決策を参照してください。

修正方法 メモリ集中型アプリケーションからスナップショットを分析しようとすると、時間がかかる場合がありますが、Visual Studio のより新しいバージョンにアップグレードすると、分析の待機時間が短縮されます。 アップグレード後にこの問題が解決されない場合は、ツールにパフォーマンスのバグが発生する可能性があります。 フィードバック チケットを作成し、作成された diagsession ファイルを共有します。 ファイルを使用すると、データの分析に時間がかかる理由を特定し、パフォーマンスを向上できる場所を見つけることができます。

フィードバック チケットにトレース ファイルとヒープ ダンプ ファイルを指定してください。

関連項目も参照:

エラー "この diagsession のマニフェスト ファイルを作成できませんでした" または "error could not create manifest file for diagsession, Visual Studio will not not reopen this session." (この diagsession のマニフェスト ファイルを作成できませんでした。Visual Studio では、このセッションを再度開くことができませんでした。)

この問題は、データの収集を停止した後に分析および表示されるメモリ スナップショット データを準備するときに問題が発生したことを意味します。 コレクション エージェントから正しい情報を取得できなかった場合から実際のデータ処理まで、問題が発生する可能性のある原因は複数あります。 そのため、さらにログ記録を行わなければ、問題の内容を診断することはできません。

修正方法 問題を診断できるように、追加のログ情報を含むフィードバック チケットに返信します。 管理者特権のコマンド プロンプトから次のコマンドを実行すると、ログ情報を取得できます。

reg add HKEY_LOCAL_MACHINE\Software\Microsoft\VisualStudio\DiagnosticsHub /v LogLevel /t REG_SZ /d All /reg:32
reg add HKEY_LOCAL_MACHINE\Software\Microsoft\VisualStudio\DiagnosticsHub /v LogDirectory /t REG_SZ /d [directory of your choice] /reg:32

これらのコマンドを実行した後、Visual Studio を起動し、シナリオを再現し、Visual Studio を閉じてから、選択した DiagnosticsHub ログ ディレクトリを zip 圧縮して、このチケットに添付します。 その時点から、何が起こっているのかをよりよく診断できるはずです。

チケットにログを追加した後、次のコマンドを実行してログ記録を無効にします。

reg delete HKEY_LOCAL_MACHINE\Software\Microsoft\VisualStudio\DiagnosticsHub /f /v LogLevel /reg:32
reg delete HKEY_LOCAL_MACHINE\Software\Microsoft\VisualStudio\DiagnosticsHub /f /v LogDirectory /reg:32

エラー: "ソース情報を使用できません。"

ソース情報を表示するには、収集時から PDB を使用できるようにする必要があります。 そのため、たとえば、CPU 使用率 の diagsession ファイルを収集し、コードにいくつかの変更を加え、再コンパイルして (古い PBD を置き換えます)、 .diagsession をもう一度開くと、更新したコードのモジュールのソース情報が表示されない可能性があります。

修正方法 この問題の最も簡単な回避策は、変更後に新しい diagsession を収集することです。 これにより、PDB が最新であることを確認できます。

エラー: "内部エラーが原因でメモリ分析に失敗しました。"

長いメモリ プロファイリング セッションの後、結果を分析しようとするとエラーが発生します。

メモリ ツールによってキャプチャされたスナップショット情報とコレクション エージェントのスナップショット情報が一致していません。 この結果は、メモリ ツールがネイティブ スナップショットのヒープ状態ファイルを見つけられなかったことを意味します。 または、この結果、メモリ ツールは、スナップショットの GC 開始時刻と、GCStats を取得するために diagsession ファイルに登録されたものと一致できませんでした。

修正方法 この問題は、Visual Studio 2022 バージョン 17.3 で修正されたツールのバグが原因でした。 新しいバージョンにアップグレードすると、問題が解決されます。 アップグレード後も問題が解決されない場合は、フィードバック チケットを作成し、チケットに添付します。

  • diagsession ファイル
  • Visual Studio のミニダンプ
  • 作成されたメモリ スナップショットのスクリーンショット。

この問題の回避策はありません。プロファイリング セッションを再起動する必要があります。

エラー: "X 診断イベントが削除されました。レポート内の一部の情報が見つからないか、不正確である可能性があります"

データキャプチャ中にイベントが削除され、結果として得られるプロファイリング レポートが不正確または使用できなくなる場合があります。 破棄されたイベントはさまざまな理由で発生する可能性がありますが、主にシステムが受信レートよりも速くイベントをディスクにフラッシュできない場合に発生します。

修正方法 破棄されたイベントを減らすのに役立つには、プロファイリング中に他のディスクと CPU を集中的に使用する操作を閉じます。 これらの操作を閉じると、システムは受信イベントのフラッシュに専用のリソースを増やすことができます。 また、CPU 使用率ツールや .NET 割り当てツールなど、これらの構成設定をサポートするツールでサンプリング頻度を減らして、オーバーヘッドを削減することもできます。

エラー: ETW リソースが使い果たされました

Visual Studio プロファイラーは、Windows イベント トレーシング (ETW) を使用してパフォーマンス情報を収集します。 システムで使用できる ETW セッションの数は限られています。すべてのセッションが既に使用されている場合は、次のエラーが発生します: ETW resources have been exhausted。 これらのセッションは、SysInternals ツール スイート、他のプロファイラー、その他の診断ツールなどの他のプログラムによって使用されます。 この問題は、次のいずれかの方法で解決できます。

  • セッションを使用してリソースを解放しているプログラムを閉じるか、または

  • 管理者特権でのコマンド プロンプトから次のコマンドを実行し、再起動することで、さらにリソースを確保します。

    reg add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\WMI" /v EtwMaxLoggers /t REG_DWORD /d 128
    

    このコマンドを実行すると、既定のセッション数が 64 から 128 に増えます (256 はシステムで許可されるセッションの最大数です)。

エラー: ARM64 VM で CPU 使用率ツールが機能しない

Visual Studio プロファイラーは、Windows イベント トレーシング (ETW) を使用してパフォーマンス情報を収集します。 現時点では、仮想マシン (VM) で実行されている場合、ARM64 用 Windows では ETW を使用したプロファイル サンプルの収集はサポートされていません。 この制限を回避するには、実際の ARM64 デバイスで CPU 使用率ツールを使用するか、インストルメンテーション ツールを使用してタイミング情報をキャプチャします。

エラー: サーバー GC が有効になっている .NET 7 および .NET Runtime 8.0.0-8.0.1 でメモリ使用量ツールが機能しない

.NET 7 ランタイムで発生し、.NET 8 ランタイム バージョン 8.0.0 および 8.0.1 に反映される問題のため、サーバー ガベージ コレクションを使用するときにオブジェクトを列挙することはできません。 ASP.NET Core アプリケーションでは、サーバー ガベージ コレクションが既定で有効になっています。

修正方法

この問題を回避するには、次の手順を実行します。

  • スナップショットを取得するとき、またはアプリケーションのダンプを収集するときに、サーバーのガベージ コレクションを無効にします。
  • 影響を受けないバージョンの .NET ランタイムを使用します。

関連項目も参照: