除錯多執行緒應用程式

2022-02-23 01:08:28 字數 1797 閱讀 9583

對於多執行緒應用程式的除錯 ,各開發工具都有良好的支援,使用廣泛的為windows下vs及unix下的gdb。

ms對vs除錯多執行緒程式給出了詳細的幫助手冊,可以在msdn中搜尋:setthreadname(設定執行緒名稱)中找到相關頂級主題:除錯多執行緒應用程式

ms-help:

以下文字摘自msdn:

執行緒是作業系統向其分配處理器時間的指令序列。在作業系統中執行的每個程序都包含至少乙個執行緒。包含多個執行緒的程序稱為多執行緒。

具有多個處理器、多核處理器或超執行緒程序的計算機可以同時執行多個執行緒。並行處理多個執行緒可以極大地提高程式效能,但是,由於需要跟蹤多個執行緒,也使得除錯更加困難。

此外,多執行緒處理會引入某些新型別的潛在 bug。例如,通常會有兩個或更多執行緒必須訪問同一資源,但是一次只能有乙個執行緒可以安全地訪問該資源。必須使用某種形式的互斥以確保一次僅有乙個執行緒訪問資源。如果互斥執行不正確,則可能形成死鎖條件,這種條件下,任何執行緒都無法執行。對於除錯而言,死鎖是特別難解決的問題。

visual studio 2008 提供了改進的「執行緒」視窗及其他使用者介面改進,旨在簡化多執行緒除錯。若要了解新的執行緒處理介面功能,最佳方式就是執行演練。請參見

演練:除錯多執行緒應用程式

。 visual studio 還提供功能強大的斷點和跟蹤點,在除錯多執行緒應用程式時,它們十分有用。可以使用斷點篩選器將斷點置於單個執行緒上。請參見

如何:指定斷點篩選器

除錯具有使用者介面的多執行緒應用程式可能會特別困難。在這種情況下,可以考慮在另一台機器上執行應用程式並使用遠端除錯。有關資訊,請參見

安裝遠端除錯

。如何:使用「執行緒」視窗

通過「執行緒」視窗除錯執行緒的實用過程。

如何:在除錯時切換到另乙個執行緒

將除錯上下文切換到其他執行緒的三種方法。

如何:標記執行緒和取消標記執行緒

在除錯過程中,標記要格外關注的執行緒,或為其設定標誌。

如何:在本機**中設定執行緒名稱

為在「執行緒」視窗中檢視的執行緒提供乙個名稱。

如何:在託管**中設定執行緒名稱

為在「執行緒」視窗中檢視的執行緒提供乙個名稱。

演練:除錯多執行緒應用程式

. 一部關於執行緒除錯功能的指導教程,重點介紹如何使用 visual studio 2008 的功能。

如何:在高效能群集上進行除錯

對執行於高效能群集上的應用程式進行除錯的技術。

除錯本機**中的執行緒時的提示

對於除錯本機執行緒十分有用的簡單技術。

如何:指定斷點篩選器

如果要將乙個斷點置於單個執行緒上,可以使用斷點篩選器。

如何:指定跟蹤點/斷點操作

使用跟蹤點可以在不中斷的情況下跟蹤程式的執行。對於研究死鎖之類的問題,這一點十分有用。

託管執行緒處理

.net framework 程式設計中的執行緒處理概念,包括示例**。

元件中的多執行緒處理

如何在 .net framework 元件中使用多執行緒處理。

多執行緒處理 (visual basic)

針對 visual basic 程式設計師的執行緒處理概念和示例**。

使用執行緒處理(c# 程式設計指南)

針對 c# 程式設計師的執行緒處理概念和示例**。

多執行緒處理

針對使用 mfc 的 c++ 程式設計師的執行緒處理概念和示例**。

如何:除錯遠端群集應用程式

有關如何為執行於高效能群集上的應用程式設定遠端除錯的說明。

概念 使用執行緒和程序

安裝遠端除錯

more:

除錯多執行緒應用程式

對於多執行緒應用程式的除錯 各開發工具都有良好的支援,使用廣泛的為windows下vs及unix下的 ms對vs除錯多執行緒程式給出了詳細的幫助手冊,可以在msdn中搜尋 setthreadname 設定執行緒名稱 中找到相關頂級主題 除錯多執行緒應用程式 ms help 以下文字摘自msdn 執行...

建立多執行緒應用程式

定義命名空間在.net中,多執行緒功能是在system.threading命名空間中定義的。usingsystem.threading 啟動執行緒system.threading命名空間中的thread類代表乙個執行緒物件,用這個類物件可以建立新的執行緒,刪除 暫停和恢復執行緒。下面的 使用thre...

建立多執行緒應用程式

定義命名空間 在.中,多執行緒功能是在system.threading命名空間中定義的。usingsystem.threading 啟動執行緒 system.threading命名空間中的thread類代表乙個執行緒物件,用這個類物件可以建立新的執行緒,刪除 暫停和恢復執行緒。下面的 使用threa...