Visual Studio 中的檢測 (C#、Visual Basic、C++、F#)

本文描述 Visual Studio 中的檢測工具,其用於收集確切的呼叫計數和呼叫時間。

有兩種類型的檢測:

  • 靜態,這會在其執行之前修改程式的檔案 (VSInstr)

  • 動態,這會使用其不會在其中變更檔案的動態流程。 其會將檔案載入記憶體,然後修改這些檔案以收集檢測資訊。 使用動態檢測工具時,您會取得更精確的資訊,但只適用於程式的較小部分。 您可以調查程式碼的小型區段。

動態檢測很有用,因為:

  • 靜態檢測會中斷強式名稱簽署。 使用動態檢測,可避免此問題,因為檢測會在執行階段發生。

  • 使用靜態檢測,檔案必須依特定順序部署,且工具可能不知道這些檔案的位置。 您必須手動執行 VSInstr。 使用新的檢測工具,您不必去尋找檔案。 在複雜的程式上,尋找所有檔案可能是一個困難的手動過程。

檢測與取樣

在分析方面,有兩種收集資料的機制。 使用檢測進行收集或使用取樣進行收集。 如需詳細資訊,請參閱了解效能收集方法

動態檢測工具

檢測 - 從 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 開始,檢測工具 會使用 VSInstr 以支援 C/C++。 VSInstr 也會用於命令列案例,並適用於 .NET Framework 和 C/C++ 應用程式。 如需詳細資訊,請參閱使用分析工具命令列收集獨立應用程式的詳細計時資料