偵錯多執行緒應用程式
執行緒是作業系統配置處理器時間的指令序列。 在作業系統中執行的每個處理序都包含至少一個執行緒。 具有一個以上執行緒的處理序就稱為多執行緒。
具有多個處理器、多重核心處理器或超執行緒處理器的電腦,可以同時執行多個執行緒。 多個執行緒的平行處理可以大幅改進程式效能,但由於帶來了追蹤多個執行緒的需要,也可能會增加偵錯的困難度。
除此之外,多執行緒也帶來一些新類型的潛在錯誤。 舉例來說,常常有兩個以上的執行緒必須存取相同資源,但同時間只有一個執行緒能夠安全存取該資源。 所以某些形式的互斥是必要的,才能確保同時間只有一個執行緒在存取該資源。 如果執行互斥的方式不正確,就可能產生「死結」(Deadlock) 的情況,造成沒有執行緒能夠執行。 在偵錯時死結可能會是個特別難處理的問題。
Visual Studio 2010 提供改良的 [執行緒] 視窗和其他使用者介面改進方法,讓多執行緒的偵錯更加容易。認識新執行緒介面功能的最佳方式就是進行逐步解說。 請參閱逐步解說:偵錯多執行緒應用程式。
Visual Studio 也提供強大的中斷點和追蹤點,這在您偵錯多執行緒應用程式時非常好用。 您可以使用中斷點篩選條件,將中斷點放置在個別執行緒上。 請參閱 HOW TO:指定中斷點篩選條件。
偵錯具有使用者介面的多執行緒應用程式可能會特別地困難。 在這種情況下,您可以考慮在第二部電腦上執行該應用程式,並使用遠端偵錯。 如需詳細資訊,請參閱 遠端偵錯安裝。
在本節中
HOW TO:使用執行緒視窗
使用 [執行緒] 視窗偵錯執行緒的好用程序。HOW TO:在偵錯時切換到另一個執行緒
切換偵錯內容到另一個執行緒的三種方式。HOW TO:將執行緒加上旗標和取消旗標
將您要在偵錯時特別注意的執行緒加上標記或旗標。HOW TO:在機器碼中設定執行緒名稱
為執行緒命名以方便在 [執行緒] 視窗中檢視。HOW TO:在 Managed 程式碼中設定執行緒名稱
為執行緒命名以方便在 [執行緒] 視窗中檢視。逐步解說:偵錯多執行緒應用程式.
執行緒偵錯功能的導覽,並強調說明 Visual Studio 2008 的功能。HOW TO:偵錯高效能叢集
偵錯在高效能叢集上執行的應用程式的相關技巧。在機器碼中偵錯執行緒的秘訣
在偵錯原生執行緒時非常好用的簡單技巧。使用平行工作視窗
顯示所有 Managed 或原生工作物件,包括其狀態和其他有用的資訊。使用平行堆疊視窗
以單一檢視顯示多個執行緒 (或工作) 的呼叫堆疊,並且聯合執行緒 (或工作) 共有的堆疊區段。逐步解說:偵錯平行應用程式
顯示如何使用 [平行工作] 和 [平行堆疊] 視窗的逐步解說。
相關章節
HOW TO:指定中斷點篩選條件
在您要將中斷點放置在個別執行緒上時,可以使用的中斷點篩選條件。HOW TO:指定追蹤點/中斷點動作
追蹤點可以讓您追蹤程式的執行,而不會中斷程式。 在研究死結這類的問題時非常好用。Managed 執行緒處理
.NET Framework 程式設計中的執行緒概念,包括範例程式碼。元件中的多執行緒
如何在 .NET Framework 元件中使用多執行緒處理。多執行緒
提供給使用 MFC 的 C++ 程式設計人員的執行緒概念和範例程式碼。HOW TO:偵錯遠端叢集應用程式
如何為在高效能叢集上執行的應用程式設定遠端偵錯的指示說明。