使用線程和進程是調試的重要組成部分。 Visual Studio 提供一個界面,在此界面中,可連接正在運行的待調試進程,可查看在那些進程中運行的附加進程和線程的有關信息,還可以控制正在調試的線程和進程的執行。
在計算機科學中,“線程”和“進程”是兩個相關的概念。 二者都表示必須按特定順序執行的指令序列。 但是不同線程或進程中的指令可以並行執行。
進程存在於操作系統內,並對應於用戶可看作為程序或應用程序的事物。 另一方面,線程存在於進程內。 因此,線程有時也稱作“輕量進程”。 每個進程都由一個或多個線程組成。
多個進程的存在使得計算機能夠一次執行多個任務。 而多個線程的存在使得進程能夠分解工作以便並行執行。 在多處理器計算機上,進程或線程可以在不同的處理器中運行。 這使得真正的並行處理成為可能。
並不總是能夠完全並行處理。 有時候必須要同步線程。 一個線程可能必須等待另一個線程的結果,或者一個線程可能需要獨占訪問另一個線程正在使用的資源。 同步問題是多線程應用程序中出現 Bug 的一個常見原因。 有時候線程可能最終等待的是永遠不會變得可用的資源。 這導致了一種稱為“死鎖”的狀況。
Visual Studio 調試器為調試線程和進程提供了功能強大但易於使用的工具。
線程和進程
在 Visual Studio 中用於處理進程的主要工具有“附加到進程”對話框、“進程”窗口和“調試位置”工具欄。 用於調試線程的主要工具有“線程”窗口、源窗口中的線程標記和“調試位置”工具欄。調試多線程應用程序的主要工具是“並行堆棧”和“並行任務”窗口。
下面的表顯示了可用信息以及可在以上每個位置執行的操作:
用戶界面 |
可用信息 |
可以執行的操作 |
---|---|---|
“附加到進程”對話框 |
可以附加的可用進程:
|
選擇要附加的進程 選擇遠程計算機 更改用於連接遠程計算機的傳輸類型 |
“進程”窗口 |
附加的進程:
|
工具:
快捷菜單:
|
“線程”窗口 |
當前進程中的線程:
|
工具:
快捷菜單:
其他操作:
|
源窗口 |
左側滾動條槽中的線程指示符指示單線程或多線程(默認情況下處於關閉狀態,可通過使用“線程”窗口中的快捷菜單打開) |
快捷菜單:
|
“調試位置”工具欄 |
|
|
“並行堆棧”窗口 |
|
|
“並行任務”窗口 |
|
|