4

F11単一のスレッドのみに関心があるようにデバッガーをセットアップできるかどうかを誰かが知っているかどうか疑問に思っていますか? atm を実行している 2 つのスレッドがありますが、そのうちの 1 つだけに関心があります。そのため、画面がページをさらに上にジャンプし続けて、最初のスレッドが何をしているかを表示したくありません。2番目のスレッドが何をしているかだけを表示するように設定したいと思います。

任意のポインタをいただければ幸いです、ありがとう。

4

2 に答える 2

4

それを行う 1 つの方法は、興味のないスレッドをフリーズすることです。

Visual Studio で、[デバッグ] -> [ウィンドウ] メニューから利用できる [スレッド] ウィンドウを表示します。

次に、 を使用してトレースしているときF11に、関心のないスレッドでデバッガーが中断した場合は、スレッド ウィンドウでこのスレッドを見つけて右クリックし、コンテキスト メニューで [フリーズ] オプションを選択します。

F10またはを使用してトレースを続けるとF11、フリーズしたスレッドでブレークポイントにヒットすることはありません。

凍結されたスレッドはまったく実行されないことに注意してください。そのため、デバッグ中に何らかの作業を行う必要がある場合は、時々凍結を解除して再度凍結する必要がある場合があります。

于 2012-11-21T17:36:17.547 に答える
1

デバッガーの「スレッド」ウィンドウを開くと、各スレッドに「Just My Code」フラグがあることがわかります。ステップスルーしている現在のスレッドのみにフラグを設定すると、「ステップイン」( F11) および「ステップオーバー」( F10) 関数がそのスレッドのみを対象としているように見えることがわかりました。これはネイティブ スレッドを対象としていますが、スレッドを使用するマネージ コードに対しても同様に機能します。

ただし、注意しないと、機能が非常に脆弱になる可能性があります。ブレークポイントは、任意のスレッドでブレークします (ブレークポイントが対象のスレッドのみにフィルタリングされていない限り)。また、このフラグを設定する前に別のスレッドがステップ実行中の場合、現在のスレッドをステップ実行しようとしている間、そのスレッドはデバッガと「対話」する可能性があります。したがって、この機能を使用している間はブレークポイントを慎重に管理する必要があります。

しかし、全体として、それは本当にうまく機能しているようです。

「Just My Code」は、「非ユーザー」コード (メソッドの属性によって制御される) に介入しないようにデバッガーを設定するためのマネージ デバッガー機能を説明するためにも使用されるため、この用語は非常に紛らわしいと思います。ネイティブ スレッド「Just My Code」は別のものであり、実際にはドキュメントの方法で多くを見つけることができません ( How to: Flag and Unflag Threads )。ステッピングのために単一のスレッドをターゲットにするというこの特定の動作は、言及されていないようです-私は偶然にそれを見つけました.

于 2012-11-21T18:41:52.883 に答える