在 Visual Studio 中偵錯執行緒和處理序
「執行緒」(Thread) 和「處理序」(Process) 在電腦科學中是相關的概念。 兩者都代表必須以特定順序執行的指令序列。 但是,不同執行緒或處理序中的指令能夠平行執行。
處理序存在於作業系統中,並對應至所謂的程式或應用程式。 從另一方面來說,執行緒存在於處理序中。 基於這個原因,執行緒有時候會稱為「輕量處理序」(Light-Weight Process)。 每個處理序是由一或多個執行緒組成。
具有多個處理序能夠讓電腦同時執行一項以上的工作。 具有多個執行緒能夠讓處理序分割工作以平行方式執行。 使用多個處理器的電腦能夠在不同的處理器上執行處理序或執行緒。 如此可達到真正的平行處理。
但是並非都能達到完美的平行處理境界。 執行緒有時候必須進行同步處理。 一個執行緒可能需要等候其他執行緒的結果,或是一個執行緒可能需要其他執行緒正在使用之資源的獨佔存取權。 同步處理是多執行緒應用程式中發生錯誤的常見原因。 有時候執行緒會演變成一直在等候永遠無法使用的資源。 這會導致所謂的「死結」(Deadlock) 情況。
Visual Studio 偵錯工具提供強大而容易使用的工具以便偵錯執行緒和處理序。
Visual Studio 中偵錯執行緒和處理序的工具
在 [Visual Studio] 中使用處理序的主要工具是 [附加至處理序] 對話方塊、[處理序] 視窗和 [偵錯位置] 工具列。 偵錯執行緒使用的主要工具是 [執行緒] 視窗、來源視窗中的執行緒標記,以及 [偵錯位置] 工具列。
用於偵錯多執行緒應用程式的主要工具是 [平行堆疊] 和 [平行工作]、[平行監看式] 及 [GPU 執行緒] 視窗。
下表顯示在這些位置中可用的資訊與能夠執行的動作:
使用者介面 |
可用的資訊 |
能夠執行的動作 |
---|---|---|
[附加至處理序] 對話方塊 |
能夠附加至的可用處理序:
|
選取要附加至的處理序 選取遠端電腦 變更連接至遠端電腦的傳輸類型 |
[處理序] 視窗 |
附加之處理序:
|
工具:
捷徑功能表:
|
[執行緒] 視窗 |
目前處理序中的執行緒:
|
工具:
捷徑功能表:
其他動作:
|
來源視窗 |
左側巡覽邊上的執行緒指示器能指出是單一或多個執行緒 (預設為關閉,可使用 [執行緒] 視窗中的捷徑功能表開啟)。 |
捷徑功能表:
|
偵錯位置工具列 |
|
|
[平行堆疊] 視窗 |
|
|
[平行工作] 視窗 |
|
|
[平行監看式] 視窗 |
|
|
GPU 執行緒視窗 |
|
|