對於多線程應用程式的調試 ,各開發工具都有良好的支援,使用廣泛的為windows下VS及unix下的GDB。
MS對VS調試多線程程式給出了詳細的協助手冊,可以在MSDN中搜尋:SetThreadName(設定線程名稱)中找到相關頂級主題:調試多線程應用程式
MSDN中的地址:ms-help://MS.MSDNQTR.v90.chs/dv_vsdebug/html/9d175bc2-1d95-4c47-9bc3-9755af968a9c.htm
以下文字摘自MSDN:
線程是作業系統向其分配處理器時間的指令序列。在作業系統中啟動並執行每個進程都包含至少一個線程。包含多個線程的進程稱為多線程。
具有多個處理器、多核處理器或超執行緒進程的電腦可以同時運行多個線程。平行處理多個線程可以極大地提高程式效能,但是,由於需要跟蹤多個線程,也使得調試更加困難。
此外,多執行緒會引入某些新類型的潛在 bug。例如,通常會有兩個或更多線程必須訪問同一資源,但是一次只能有一個線程可以安全地訪問該資源。必須使用某種形式的互斥以確保一次僅有一個線程訪問資源。如果互斥執行不正確,則可能形成死結條件,這種條件下,任何線程都無法執行。對於調試而言,死結是特別難解決的問題。
Visual Studio 2008 提供了改進的“線程”視窗及其他使用者介面改進,旨在簡化多線程調試。若要瞭解新的線程處理介面功能,最佳方式就是執行演練。請參見演練:調試多線程應用程式。
Visual Studio 還提供功能強大的斷點和跟蹤點,在調試多線程應用程式時,它們十分有用。可以使用斷點篩選器將斷點置於單個線程上。請參見 如何:指定斷點篩選器
調試具有使用者介面的多線程應用程式可能會特別困難。在這種情況下,可以考慮在另一台機器上運行應用程式並使用遠端偵錯。有關資訊,請參見安裝遠端偵錯。
本節內容
-
如何:使用“線程”視窗
-
通過“線程”視窗調試線程的實用過程。
-
如何:在調試時切換到另一個線程
-
將調試環境切換到其他線程的三種方法。
-
如何:標記線程和取消標幟線程
-
在調試過程中,標記要格外關注的線程,或為其設定標誌。
-
如何:在機器碼中設定線程名稱
-
為在“線程”視窗中查看的線程提供一個名稱。
-
如何:在Managed 程式碼中設定線程名稱
-
為在“線程”視窗中查看的線程提供一個名稱。
-
演練:調試多線程應用程式.
-
一部關於線程調試功能的指導教程,重點介紹如何使用 Visual Studio 2008 的功能。
-
如何:在高效能群集上進行調試
-
對運行於高效能群集上的應用程式進行調試的技術。
-
調試機器碼中的線程時的提示
-
對於調試本機線程十分有用的簡單技術。
相關章節
-
如何:指定斷點篩選器
-
如果要將一個斷點置於單個線程上,可以使用斷點篩選器。
-
如何:指定跟蹤點/斷點操作
-
使用跟蹤點可以在不中斷的情況下跟蹤程式的執行。對於研究死結之類的問題,這一點十分有用。
-
託管線程處理
-
.NET Framework 編程中的線程處理概念,包括範例程式碼。
-
組件中的多執行緒
-
如何在 .NET Framework 組件中使用多執行緒。
-
多執行緒 (Visual Basic)
-
針對 Visual Basic 程式員的線程處理概念和範例程式碼。
-
使用線程處理(C# 編程指南)
-
針對 C# 程式員的線程處理概念和範例程式碼。
-
多執行緒
-
針對使用 MFC 的 C++ 程式員的線程處理概念和範例程式碼。
-
如何:調試遠程群集應用程式
-
有關如何為運行於高效能群集上的應用程式設定遠端偵錯的說明。
請參見概念
使用線程和進程
安裝遠端偵錯
More:http://blog.donews.com/me1105/archive/2011/02/09/113.aspx