控制進程和執行緒

當您執行使用者模式偵錯時,會啟用、顯示、凍結、取消凍結、暫停和未暫停的進程和執行緒。

目前作用中的進程是目前正在偵錯的進程。 同樣地, 目前作用 中的執行緒是偵錯工具目前控制的執行緒。 許多偵錯工具命令的動作是由目前進程和執行緒的身分識別所決定。 目前的進程也會決定偵錯工具所使用的虛擬位址對應。

偵錯開始時,目前的進程是偵錯工具所附加的進程,或造成中斷偵錯工具的例外狀況。 同樣地,目前線程是偵錯工具附加至進程或造成例外狀況時作用中的執行緒。 不過,您可以使用偵錯工具來變更目前的進程和執行緒,以及凍結或取消凍結個別執行緒。

在核心模式偵錯中,進程和執行緒不受本節所述的方法控制。 如需如何在核心模式中操作進程和執行緒的詳細資訊,請參閱 變更內容

顯示進程和執行緒

若要顯示進程和執行緒資訊,您可以使用下列方法:

設定目前的進程和執行緒

若要變更目前的進程或執行緒,您可以使用下列方法:

凍結和暫停執行緒

偵錯工具可以 暫停 執行緒或 凍結 執行緒,來變更執行緒的執行。 這兩個動作有一些不同的效果。

每個執行緒都有與其相關聯的 暫停計數 。 如果這個計數是一或更大的,系統就不會執行執行緒。 如果計數為零或更低,系統會在適當時執行執行緒。

一般而言,每個執行緒都有零的暫停計數。 當偵錯工具附加至進程時,它會將進程中的所有線程暫停計數遞增一個。 如果偵錯工具與進程中斷連結,它會遞減所有暫停計數一次。 當偵錯工具執行進程時,它會暫時遞減所有暫停計數一次。

您可以使用下列方法來控制偵錯工具中任何執行緒的暫停計數:

這些命令最常見的用法是從一到兩個,引發特定執行緒的暫停計數。 當偵錯工具執行或中斷連結進程時,執行緒接著會有一個暫停計數,而且即使進程中的其他執行緒正在執行,仍會暫停。

即使您正在執行 非vasive 偵錯,您也可以暫停執行緒。

偵錯工具也可以 凍結 執行緒。 此動作類似于以某種方式暫停執行緒。 不過,「凍結」只是偵錯工具設定。 Windows 作業系統中的任何專案都無法辨識此執行緒的任何不同。

根據預設,所有線程都是 unfrozen。 當偵錯工具造成進程執行時,凍結的執行緒不會執行。 不過,如果偵錯工具與進程中斷連結,則所有線程都會取消凍結。

若要凍結和解除凍結個別執行緒,您可以使用下列方法:

在任何事件中,屬於目標進程的執行緒永遠不會在偵錯工具中斷為目標時執行。 只有在偵錯工具執行進程或中斷連結時,執行緒的暫停計數才會影響執行緒的行為。 凍結狀態只會在偵錯工具執行進程時影響執行緒的行為。

其他命令中的執行緒和進程

您可以在許多其他命令之前新增執行緒規範或進程規範。 如需詳細資訊,請參閱個別命令主題。

您可以在許多命令和擴充命令之前,新增 ~e (執行緒特定命令) 限定詞。 此限定詞會導致命令在指定的執行緒上執行。 如果您想要將命令套用至多個執行緒,此限定詞特別有用。 例如,下列命令會針對正在偵錯的每個執行緒重複 !gle 擴充功能命令。

~*e !gle 

多個系統

偵錯工具可以同時附加至多個目標。 當這些進程包含傾印檔案,或包含多個電腦上的即時目標時,偵錯工具會針對每個動作參考系統、進程和執行緒。 如需這類偵錯的詳細資訊,請參閱 偵錯多個目標