HOW TO:使用執行緒視窗
更新:2007 年 11 月
這個主題適用於:
版本 |
Visual Basic |
C# |
C++ |
Web Developer |
---|---|---|---|---|
Express 版 |
||||
Standard 版 |
||||
Pro/Team 版 |
表格圖例:
套用 |
|
不套用 |
|
預設隱藏的命令。 |
您可以使用 [執行緒] 視窗檢查和管理正在偵錯之程式中的執行緒。
[執行緒] 視窗包含目前存在於您程式中的所有執行緒的清單。這份清單會提供每個執行緒的某些有用資訊:
[名稱] 和 [ID] 欄顯示執行緒名稱和識別碼,協助您識別執行緒。
[優先權] 欄顯示系統指派給每個執行緒的優先權或優先順序。
[暫止] 欄顯示暫停次數 (Suspend Count),這個數字決定執行緒目前是否可以執行。如需暫停次數的說明,請參閱本主題的「凍結和解除凍結執行緒」一節。
[分類] 欄會將執行緒分類為使用者介面執行緒、遠端程序呼叫處理常式或背景工作執行緒 (Worker Thread)。此欄也識別主執行緒。
[位置] 欄顯示建立執行緒的來源位置。
旗標欄未加上標籤,並位在最左邊。當您將想要研究的執行緒加上旗標時,這欄中會出現旗標圖示。如需如何將執行緒加上旗標的指示,請參閱 HOW TO:將執行緒加上旗標和取消旗標。
最後,還有一欄未加上標籤,就是左邊算來第二欄。這是使用中執行緒欄。如果這欄中有黃色箭號,表示是使用中執行緒。
若要在中斷模式或執行模式顯示執行序視窗
- 在 [偵錯] 功能表上,指向 [視窗],然後按一下 [執行緒]。
若要排序執行緒清單
在 [執行緒] 視窗中,按一下任意欄頂端的按鈕。
若要排序成讓加上旗標的執行緒出現在清單頂端,請按一下最左邊的按鈕。
若要排序成讓使用中的執行緒出現在清單頂端,請按一下左邊的第二個按鈕。
若要排序成讓具有最小 ID 編號的執行緒出現在頂端,請按一下 [ID] 按鈕。
若要依執行緒分類排序,請按一下 [分類] 按鈕。這樣會依功能分類的字母順序排序執行緒。
若要依執行緒名稱排序,請按一下 [名稱] 按鈕。
若要依執行緒來源位置排序,請按一下 [位置] 按鈕。
若要排序成讓優先權最高的執行緒出現在頂端,請按一下 [優先權] 按鈕。
若要排序成讓具有最小暫停次數的執行緒出現在頂端,請按一下 [暫止] 按鈕。
如果想要反轉排序次序,請再按一下相同按鈕。例如,如果依執行緒 ID 編號排序,則具有最小 ID 編號的執行緒會排在頂端。如果再按一下 [ID] 按鈕,則具有最大 ID 編號的執行緒會出現在頂端。
若要將偵錯內容切換至另一個執行緒
在 [執行緒] 視窗中,以滑鼠右鍵按一下執行緒,然後在快速鍵功能表中選擇 [切換至執行緒]。
-或-
按兩下任一執行緒。
黃色的箭頭將會標示出使用中的執行緒。
凍結和解除凍結執行緒
您可以凍結和解除凍結執行緒。當執行緒遭到凍結時,即使有可用的資源,系統也不會開始執行執行緒。
在機器碼中,呼叫 SuspendThread 和 ResumeThread Windows 函式或是 CWinThread::SuspendThread 和 CWinThread::ResumeThread MFC 函式,就可以暫止或繼續執行緒。呼叫 SuspendThread 或 ResumeThread,會變更 [執行緒] 視窗中顯示的「暫停次數」(Suspend Count)。然而,凍結或解除凍結原生執行緒並不會變更暫停次數。在機器碼中,除非將執行緒解除凍結,而且執行緒的暫停次數為零,否則執行緒無法執行。
在 Managed 程式碼中,凍結或解除凍結執行緒並不會變更暫停次數。在 Managed 程式碼中,凍結之執行緒的暫停次數為 1。而在機器碼中,除非透過 SuspendThread 呼叫將執行緒暫止,否則凍結之執行緒的暫停次數為 0。
注意事項: |
---|
當您在偵錯機器碼對 Managed 程式碼的呼叫時,Managed 程式碼與呼叫它的機器碼會在相同的實體執行緒中執行。暫止或凍結原生執行緒,也會凍結 Managed 程式碼。 |
若要凍結執行緒的執行
- 在 [執行緒] 視窗中,以滑鼠右鍵按一下執行緒,然後選擇快速鍵功能表中的 [凍結]。
若要解除凍結執行緒的執行
- 在 [執行緒] 視窗中,以滑鼠右鍵按一下凍結的執行緒,然後選擇快速鍵功能表中的 [解除凍結]。
顯示執行緒呼叫堆疊以及切換框架
在多執行緒程式中,每個執行緒都會有它自己的呼叫堆疊。[執行緒] 視窗則提供便利的方式來檢視執行緒呼叫堆疊。
若要檢視執行緒的呼叫堆疊
在 [執行緒] 視窗中,將滑鼠指標放在使用中執行緒欄中,與想要研究的執行緒對應的那一行上。
稍等一下,資料提示方塊就會出現。這樣會顯示執行緒的呼叫堆疊。