2

並列処理では、バックグラウンドまたはデバッグ中のタスクが飛び回ります。すべての行にブレークポイントを追加することになります。タスクにステップインするだけで、最初に単一のブレークポイントを配置する方法はありますか?

4

1 に答える 1

5

デバッガーで一時停止している間、[スレッド] ウィンドウを使用して、コンテキストの切り替えをより詳細に制御できます。スレッドを右クリックして、フリーズを選択できます。これにより、コードのステップ実行中にデバッガーがそのスレッドに切り替わることがなくなります。Shift キーを押しながら複数のスレッドを選択して、すべてをフリーズすることもできます。ただし、ステップしているスレッド以外のすべてのスレッドをフリーズすると、他の処理に妨げられずにステップスルーできます。

少し厄介ですが、これを使用して、1 つのスレッドのみを明示的に解凍し、テストしたい特定のポイントで (Switch to Thread を使用して) アクティブなスレッドを強制的に変更することにより、いくつかの種類の競合状態を調査することもできます。これは、すべてのタイプのスレッド同期の問題を再現するわけではありません (別の CPU でのメモリ キャッシュの処理など、より微妙な問題もあります) が、別の実行順序の影響 (デッドロック シナリオなど) を確認できます。

于 2012-10-31T14:56:29.877 に答える