2

このシナリオは以前にもありましたが、アクティブに実行されているフォームがコード内で実行されている場所を特定できる方法があるかどうか疑問に思っています。問題は、まだ完全に慣れていない非常に大きなアプリケーションを継承し、それを VS.NET 2010 で実行する場合です。私が「x」をするとき」。

これいくつかのボタンを備えた単純なフォームである場合、ここで質問することさえありません。私はそれほど初心者ではありません。しかし、時間のかかる作業は、ドラッグ アンド ドロップ機能や右クリック オプションなどを備えた大規模なマルチ プロジェクト ソリューションでタブ付きの画面を見て、デバッグするブレークポイントを配置する場所を追跡するのに 5 ~ 10 分を費やさなければならない場合です。

私が疑問に思っているのは、WinForms アプリを IDE 経由で実行し、次のアクションで VS.NET にコードを中断するように指示する「何か」を実行する方法があるかどうかです (明らかに、ブレークポイントがないため、場所がわからないためです)。まだ1つ置きます)。これにより、どのイベントがそれほど単純ではない形式または一連の形式で発生しているかを追跡するのに多くの時間を節約できます。

これが理にかなっていることを願っています...

ありがとう!

4

1 に答える 1

2

はい、ある程度可能です。Debug + Break All を使用すると、99.9% の確率で、プロジェクトの一部であるコードに割り込むことはありません。通常、Winforms アプリはアイドル状態で、メッセージ ループをポンピングし、何かが起こったことを Windows が通知するのを待っています。Application.Run() ステートメントで中断します。

次に、デバッグ + ステップ オーバーを使用するためのトリック。プログラムは通常どおり実行を再開します。次に、UI コマンド (質問で 'x' を実行) を与えると、デバッガーは実際のコードの最初のステートメント、通常はそのコマンドのイベント ハンドラーの開始時に中断します。そのコードが適切であるとは限りません。たとえば、MouseMove イベント ハンドラーで中断する可能性があります。だからYMMV。

于 2012-12-05T20:43:51.957 に答える