11

VS2010 Beta 2 を使用して、マルチスレッド コードをデバッグしています。並列スタックなどが大好きです。

ただし、質問があります。複数のスレッドから呼び出される可能性のあるメソッドにブレークポイントを設定しています。ブレークポイントに到達したら、そのブレークポイントをトリガーしたスレッドに集中したいと思います。ただし、「ステップ」を押すと、VS が別のスレッドに切り替わることがよくあります (たとえば、スレッド 1 で停止しているが、その間にスレッド 2 がブレークポイントにヒットしたとします)。

スレッド ウィンドウでスレッドを手動でフリーズできることはわかっています。自動的に行う方法はありますか?基本的に、ブレークポイントに到達したら、F-5 を押すまで現在のスレッドを除くすべてのスレッドをフリーズしますか?

4

4 に答える 4

12

あなたが探しているものを正確に実行する Visual Studio 2010 拡張機能をリリースしました。そしてそれは無料です:)。

プレゼンテーション

この Visual Studio 2010 拡張機能は、2 つのショートカットとツールバー ボタンを追加して、開発者がマルチスレッド アプリケーションのデバッグ中にシングル スレッドに簡単に集中できるようにします。

これにより、[スレッド] ウィンドウに手動で移動して、従う必要のあるスレッド以外のすべてのスレッドをフリーズ/解凍する必要が大幅に減少するため、生産性の向上に役立ちます。

特徴

以降の実行を現在のスレッドのみに制限します。他のすべてのスレッドをフリーズします。ショートカット: CTRL+T+T または Snowflake ボタン。(ID に基づいて) 次の単一スレッドに切り替えます。現在のスレッドを変更し、他のすべてのスレッドをフリーズします。ショートカット: CTRL+T+J または [次へ] ボタン。

こちらのギャラリー公式ページ、またはCodeplex リポジトリで確認してください。

于 2011-07-02T10:46:20.143 に答える
3

[デバッグ] -> [ウィンドウ] -> [スレッド] から [スレッド] ウィンドウをロードすると、ブレーク ポイントに到達したら、すべてのスレッドを選択して [スレッドのフリーズ] をクリックし、アクティブなスレッドを再開して、それを選択し、[スレッドの解凍] を選択します。 "。

これにより、現在のスレッドのみがデバッガーで実行できるようになります。

于 2011-04-13T21:57:39.923 に答える
2

私が知っているわけではありませんが、ステップスルー中にブレークポイントを無効にすることができます。

多くのスレッドを混乱させることが心配なときは、スレッド ウィンドウを開いたままにして、スレッド ID をメモしておく傾向があります。

于 2010-02-04T18:02:13.857 に答える
1

Visual Studio マクロでこれを行う方法については、John Robbins によるブログ投稿があります。

于 2011-07-02T10:53:45.643 に答える