2011-06-22 74 views
4

我有一個基本問題。我正在調試應用程序,編輯器在一個時間點顯示20個線程。該控件有一個線程已經觸發了一個斷點。剩餘的19個線程是否會按照他們各自的指令進行維持,直到時間控制在第一個線程?或者,當我調試第一個線程時,其他線程可能會竊取一些執行?調試一個線程阻止其他線程?

+2

您可以添加一種語言並使用您的使用 – Manuel

+1

它取決於調試器的類型和正在使用的調試環境,但通常的答案是肯定的,其他線程將被暫停。 –

+0

哪個調試器? gdb? devenv? ... – VGE

回答

3

如果您詢問有關Visual Studio ...當它遇到斷點時,所有線程都暫停。但是,當您逐步完成代碼時,即使您打算調試單個線程,其他線程也有機會運行,這是默認行爲。

但是,您可以凍結線程窗口中的各個線程,右鍵單擊一個線程以查看上下文菜單。然後,當您逐步完成代碼時,「凍結」線程不會運行。

+0

+1爲目前爲止的最佳答案,尤其是。有關特定IDE的資格。當遇到BP時,Eclipse/Java不會掛起其他線程。 –

+0

感謝您的回覆和+1。當其他(解凍)線程在您逐步執行代碼時運行時,控件是否會返回到同一個位置,以便您可以重新開始執行?我使用Visual Studio2008,有時使用gdb。 gdb中的行爲與Visual Studio不同嗎?語言是C++。 –

+0

關於VS2008,是的,當你單步執行代碼時,所有解凍的線程得到運行的一次機會,它們得到多少時間,以及它們是否實際運行,都由OS調度器決定。從應用程序運行到下一個斷點被觸發爲止的「瞬間」,或者直到當前行結束執行,如果單步執行一行代碼。不幸的是,我對gdb一無所知。 –

2

時。

1

的中斷調試過程通常暫停所有線程被掛起,所以所有線程被掛起。

相關問題