Visual Studio 内でデバッグしているときに、何らかの理由で特定のスレッドをデバッグしているときに、Visual Studio が別のスレッドにジャンプするだけです。
同じスレッドに配置されるように動作を変更するにはどうすればよいですか?
Visual Studio 内でデバッグしているときに、何らかの理由で特定のスレッドをデバッグしているときに、Visual Studio が別のスレッドにジャンプするだけです。
同じスレッドに配置されるように動作を変更するにはどうすればよいですか?
「特定のスレッドをデバッグするとき、Visual Studio は別のスレッドにランダムにジャンプするだけです」と言うとき、特定のスレッドのコードをステップ実行すると、別のスレッドのブレークポイントにヒットする可能性があるということですか?
その場合は、スレッド ウィンドウを使用して、デバッグに関心のあるスレッド以外のスレッドを「フリーズ」できます。
http://msdn.microsoft.com/en-us/library/w15yf86f.aspxから:
[スレッド] ウィンドウから、アクティブなスレッドを設定できます。さらに、個々のスレッドの実行をフリーズまたは解凍できます。フリーズすると、スレッドの実行が妨げられます。解凍することで継続できます。2 つの縦の青いバーは、凍結したスレッドを示します。
これに対するサポートは、使用している Visual Studio のバージョンによって異なる場合があります (たとえば、Express バージョンではスレッド ウィンドウがサポートされていないと思います)。
ここでのすべての回答は、スレッドの凍結について述べていますが、スレッドが多数あると面倒になり、どれを凍結するかわかりません。もっと簡単な裏技を見つけました。
スレッドiがブレークポイントにヒットし、j、kなどがしばらくの間同じヒットになるとしたら、ブレークポイントを一時的に無効にして、スレッドiのデバッグを開始します。これらのスレッドにはブレークポイントがないため、デバッガーが他のスレッドにジャンプしないことがわかります。デバッグが完了したら、ブレークポイントを有効にします。
デバッガーでプログラムを実行してもプログラムの結果は変わらないはずなので、これがデフォルトです。
プログラムが「ライブ」で実行されている場合、プログラムは常にスレッド間を切り替えているため、デバッガーが同じことを行わなかった場合、プログラムの動作は異なります。
いずれにせよ、それを防ぐために私が知っている唯一の方法は、[スレッド] ウィンドウを開き、現在のスレッド以外のすべてのスレッドを右クリックして、freeze
. thaw
(後でもう一度思い出してください)
通常、スレッド パネルで右クリックして他のスレッドをフリーズします。これが正気かどうかはわかりませんが。