答えて

3

一般に、スレッドパネルで右クリックして他のスレッドをフリーズします。これが正気かどうかわかりませんが。

6

デバッガでプログラムを実行するとプログラムの結果が変わってはいけないので、これがデフォルトです。

プログラムが「実行中」のときは常にスレッド間で切り替えが行われるため、デバッガで同じことが行われなかった場合、プログラムの動作が異なります。

私が知っている唯一の方法は、スレッドウィンドウを開き、現在のスレッド以外のすべてのスレッドを右クリックし、freezeを選択することです。 "後でthawに覚えておいてください。"

+0

これは意味があります...しかし、それは非常に迷惑であるという事実を変更しません。 :) MSがブレークポイントに達すると現在のスレッド内に留まるように設定オプションを追加した場合、デバッグに役立ちます...そのようにすれば、その時に実行されているロジックは面倒でなくてもデバッグできますフリーズされたスレッドでプログラムをデバッグするときに遅れが生じます。 – Jon

+0

私は同意しませんが、明らかな反論は、デバッグしているときには、実際の運用アプリケーションで作業していないことです。これは、デバッグバージョンのアプリケーションを最適化してコンパイルしていない可能性が高いからです。あなたが論理的な問題を探しているならば、デバッガをより良く制御することは、賢明な正しいことよりはるかに便利です。 – stu

19

「特定のスレッドをデバッグするときに、ビジュアルスタジオがランダムに別のスレッドにジャンプする」と言うと、特定のスレッドでコードをステップ実行すると別のスレッドでブレークポイントを打つ?

もしそうなら、あなたはデバッグに興味を持っているもの以外の「凍結」のスレッドにスレッドのウィンドウを使用することができます:http://msdn.microsoft.com/en-us/library/w15yf86f.aspxから

を:

スレッドウィンドウから、あなたが設定することができます アクティブなスレッド。また、 は、個々のスレッドごとに の実行をフリーズまたは解凍することができます。フリーズ はスレッドの実行を防ぎます。 解凍を続行することができます。 の2本の垂直の青色のバーは、固定された スレッドを示します。

これは、使用しているVisual Studioのバージョンによって異なる場合があります(たとえば、Expressバージョンでは[スレッド]ウィンドウがサポートされていないと思われます)。

4

ここでは、スレッドをフリーズする方法についてのすべての回答がありますが、多くの場合は煩雑になり、フリーズする方法はわかりません。私は簡単なトリックを見つけた。

ブレークポイントはスレッドでヒットした私は、およびJK、などと言うには、一時的にブレークポイントを無効にして、私はスレッドをデバッグを開始、その後、いくつかの時間に同じにヒットしようとしている 。私はデバッガが他のスレッドにジャンプしないことが分かりました。なぜなら、それらのスレッドにはブレークポイントがないからです。デバッグが完了したら、ブレークポイントを有効にします。

関連する問題