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