【譯】.NET 的新的動態檢測分析

  隨著 Visual Studio 16.9 的發布,Visual Studio 中的檢測分析變得更好用了。本文介紹我們新的動態分析工具。這個工具顯示了函數被調用的確切次數,並且比我們以前的靜態檢測工具要快。它還支援. NET Core,而不需要 PDB。

嘗試下

  在 Visual Studio 中,你可以通過 Debug -> Performance Profiler 或者 Alt-F2 啟動性能分析器。進入 summary 頁面後,選擇 Instrumentation 複選框。

  在分析方面,有兩種收集數據的機制。通過插樁(instrumentation)或取樣收集。使用插樁,應用程式中的每個函數調用都被注釋和插樁,以便在調用它時,它與有關調用者的資訊一起添加到跟蹤中。通過取樣,當前正在執行的調用堆棧以一定的間隔從 CPU 輪詢,然後將每個幀添加到跟蹤中。

  取樣的價值在於它很少被監聽,因此更有可能在統計上代表生產中運行的應用程式。插樁分析的價值在於,您可以獲得關於函數被調用次數的準確調用計數。這提供了比正常取樣分析更詳細的資訊,在某些場景中,這會導致時間失真。例如,雖然功能不多,但經常調用的函數將比在現實世界中顯示的更多。

  對於新的動態插樁場景,還有一些更多的好處。首先,您應該看到該工具運行速度的性能改進。這是因為在這個場景中,我們不再需要使用 VSInstr 來使用插樁。

  其次,我們的動態工具支援沒有 PDB 的 .NET Core 項目。在您不得不修改您的構建以生成完整的 PDB 只是為了使用插樁之前。最終,這意味著您可以按原樣運行項目,而不需要做任何額外的工作來檢測託管程式碼。

  最後,我們設計了這個檢測工具,使其不需要修改您的程式集文件。這意味著我們不會意外地破壞您可能擁有的任何簽名,並能夠檢測所有託管程式碼。

請給我們回饋

  如果您想與我們的工程團隊討論如何改進這個工具,可以在線填寫調查表,我們很快就會聯繫您。

原文鏈接

  //devblogs.microsoft.com/visualstudio/new-dynamic-instrumentation-profiling/