いくつかのプロジェクトで解決策があります。異なるプロジェクトに複数のブレークポイントがあります。これらのブレークポイントの 1 つにヒットした最初のスレッドをトレースし、他のスレッドが同じコード ブロックに入っているかどうかに関係なく、その単一のスレッドのトレースを継続したいと考えています。
ブレークポイントに条件を定義することでこれが可能であることはわかっています。つまり、スレッド名 = ...またはスレッドID = ...ですが、私のケースは負荷が重いです。詳しくはこちらアプリケーションで、多くのスレッドに接続するとすぐにw3wp.exe
ブレークポイントに到達します。 のようなものが必要ですThreadLocal<break-point>
。
それは可能ですか?もし可能ならば、どのようにですか?
ベストアンサー1
私がやったことは次のとおりです:
探しているスレッドにのみヒットすることがわかっている条件付きブレークポイントを設定しました。
ブレークポイントに到達し、目的のスレッドに移動したら、Visual Studio のスレッド ウィンドウ (デバッグ中は、デバッグ -> ウィンドウ -> スレッド) でCtrl+ A(すべてのスレッドを選択する) を押し、Ctrl現在いるスレッドを + をクリックします。デバッグするスレッドを除くすべてのスレッドが選択されているはずです。
- 右クリックして、「フリーズ」を選択します。
これで、Visual Studio は解凍されたスレッドのみをステップ実行します。これを行うと、凍結されたスレッドすべてをループする必要があるため、速度が大幅に低下するようです。ただし、これにより、マルチスレッド デバッグに多少の安定性がもたらされました。