デバッガーの使用について学習することの 1 つは、システムの "柔らかい白い下腹" (ワニの解剖学への暗示) と呼ばれるものを確認することです。開始および停止される「ヘルパー」スレッドの配置...など
これらのメッセージをすべて見ると、経験の浅いユーザーの気が散る可能性があります。ただし、時間の経過とともに、デバッガーが単に真実で冗長であることを理解するようになります。表示される詳細は、実際にはデバッグ プロセスに関連していない可能性がありますが、それを「認識する」ことはできません。事実に基づいた情報を表示しているだけであり、関連するものとそうでないものを選別する必要があります。
Windows フォーム アプリケーションに関しては、いくつかの "ヘルパー" スレッドがあり、通常は名前がないか、(デバッグ中によく見られるように) "vshost.RunParkingWindow" のような名前が付いていることに気付きました。通常、自分で作成したスレッドに加えて、システムがユーザーに代わってスレッドを作成していることを信頼する必要があります。他の人が示唆しているように、独自のスレッドに意味のある名前を付けて、システムのスレッドと区別できるようにします。
UI 更新コードのどこかにブレークポイントを配置することで、Windows フォーム アプリのマルチスレッド構造をさらに詳しく知ることができます。ブレークポイントがヒットしたら、Debug/Windows/Threads を使用して、プロセス空間で実行されているすべてのスレッドのビューを表示します。 . その数に驚くと思います!アプリでいくつかのフォームを 1 つずつ作成して .Show() してみてください。各 .Show() 操作が新しいウィンドウを作成し、それによって、そのウィンドウをサポートするいくつかのスレッドが作成されることがわかると思います。
次のようなメッセージがデバッグ ウィンドウに表示される場合もあります。多くの場合、ユーザーに代わって妥当なデフォルト アクションを実行するシステム例外ハンドラがあります。デバッガーに途切れることなく表示されるこのメッセージは、何らかのデフォルト ハンドラーがこの例外を処理したことを示しています。
Windows フォーム アプリケーションなどのシステム サポートは、実装をより簡単かつシンプルにするために、やや複雑です。デバッガーを実行すると、これらの詳細の一部が表示されます。時間が経つにつれて、何が「通常」で、何が問題を示しているかがわかります。