2011-06-22 15 views
4

私は基本的な質問があります。私はアプリケーションをデバッグしており、エディタはある時点で20スレッドを表示しています。コントロールは、ブレークポイントに達した1つのスレッドを使用しています。タイムコントロールが最初のものになるまで、残りの19スレッドは、それぞれの指示に従って保持されますか?または、最初のデバッグ中に他のスレッドが実行を盗む可能性がありますか?1つのスレッドをデバッグすると他のスレッドが停止しますか?

+2

使用言語と環境を追加できますか – Manuel

+1

使用されているデバッガのタイプとデバッグ環境によって異なりますが、通常の答えはyesです。他のスレッドは中断されます。 –

+0

どのデバッガですか? gdb?デヴェンヴェ? ... – VGE

答えて

3

Visual Studioについて質問している場合は、ブレークポイントに達するとすべてのスレッドが中断されます。しかし、コードをステップ実行しているときに、単一のスレッドをデバッグしようとしても、他のスレッドも実行する機会がありますが、これがデフォルトの動作です。

ただし、スレッドウィンドウで個々のスレッドをフリーズし、スレッドを右クリックしてコンテキストメニューを表示できます。その後、コードをステップ実行している間に、「フリーズした」スレッドは実行されません。

+0

です。特定のIDEに関する資格。 Eclipse/Javaは、BPにヒットしたときに他のスレッドを中断しません。 –

+0

お返事ありがとうございます。コードをステップ実行している間に他の(フリーズしていない)スレッドが実行されると、コントロールは同じ場所に戻り、ステップスルーを再開できますか?私はVisual Studio2008を使用し、時にはgdbを使用します。 gdbの動作はVisual Studioと異なりますか?言語はC++です。 –

+0

VS2008に関して、はい、コードをステップ実行すると、フリーズされていないスレッドがすべて実行される瞬間、得られる時間、実際に実行するかどうかはOSスケジューラによって決まります。次のブレークポイントがヒットするまで、またはコードの行をステップ実行している場合は、現在の行が実行を終了するまで、アプリケーションが実行されるため、「瞬時に」表示されます。私は残念ながらgdbについては何もしません。 –

2

デバッガブレークのすべてのスレッドが中断されている。

1

プロセスは、通常は中断されるため、すべてのスレッドが中断されています。

関連する問題