web-dev-qa-db-ja.com

ブレークポイントを設定せずにVisualStudio2010のすべてのイベントをデバッグする

ボタンの押下、タイマーなど、多数のイベントがあるWindowsフォームアプリケーションをデバッグしようとしています。

ブレークポイントを設定せずに、アプリケーションによって実行されているコードのすべての行をキャッチする方法はありますか?

編集:プログラムは私が書いたものではないので、私はコードに慣れていません。プログラム全体をステップスルーして、実行されているコードのすべての行をキャッチしたいと思います。さまざまなコントロールが動的に作成されるため、すべてのイベントでブレークポイントを設定することは実用的ではありません。

25
Ying Chan

ブレークポイントを設定せずにボタンクリックをデバッグするには:

  1. デバッガーでアプリを起動します。
  2. 目的のクリックの直前の状態になります。
  3. デバッガーに戻り、一時停止を押してからF11(ステップイン)を押します。何も起こりません。
  4. アプリに移動してボタンを押します。デバッガーが引き継ぎ、イベントハンドラーにドロップします。

注:これは、ペイント、マウスイベント、またはその他のイベントが処理されている場合は機能しません。上記の手順を実行しようとすると、デバッガーはそれらのハンドラーにドロップします。

14
Austin Salonen

Visual Studio 2010のUltimateエディションを使用している場合は、 IntelliTrace (以前のHistorical Debugger)と呼ばれる新機能を使用できます。これにより、必要なことを正確に実行できます。プログラムの実行中に発生したすべてのメソッド呼び出しとイベントを確認でき、必要なイベントに戻ることができます。

IntelliTraceを有効にするには、Tools → Options → IntelliTraceに移動し、[IntelliTraceを有効にする]チェックボックスをオンにして、[イベントのみ]または[イベントと通話情報]の2つのモードのいずれかを選択し、デバッガーでアプリケーションを実行します(F5) 。

2つのモードの違いは、後者はプロファイラーを使用してallランタイム情報を収集するため、完全な呼び出しスタックを取得しますが、取得しないことです。デバッガーの編集および続行機能を使用できる。

詳細については、この 一連の記事 、そしてもちろん、MSDNを参照してください。

11
Igal Tabachnik

コードカバレッジツールを試すこともできます。

たとえば、 ResharperdotCover がある場合、アプリケーションを実行でき(dotCover-> Cover Application ...メニュー項目を使用)、アプリケーションが終了したらdotCoverを実行できます。 VS IDEで実行されたコード行を緑色で強調表示することにより、実行されたコード行が表示されます。実行されなかったコード行は赤色で表示されます。

これを行う他のツールがあるかどうかはわかりませんが、それはオプションです。

9
Jason Evans

私は ランタイムフロー ツールを開発して、この問題を正確に解決しました-リアルタイムの関数呼び出し監視を介して、見慣れない大規模な.NETコードベースを理解しました。 IntelliTraceに似ていますが、デバッグよりも制御フローに重点が置かれています。

2
Sergey Vlasov

なぜあなたはすべての行で壊れたいのですか?これは非常に面倒で時間がかかります。プログラムの実行中のアクティビティを確認する場合は、ログメカニズムまたはDebug.Writelineを使用して、情報をイミディエイトウィンドウに出力します。

1
Dave Swersky

コードの行をトレースすることはできませんが、何が実行されたかを知りたい場合はTrace.TraceInformation呼び出しを使用できます。 Debug.Writeもあります。どちらの出力も、VisualStudioの出力ウィンドウに書き込まれます。

別の解決策は、たとえばlog4netを使用してアプリケーションにログを追加することですが、それはニーズに対してやり過ぎかもしれません。

1
samy

これはまさにあなたが求めているものではありませんが、知らなかった場合は、既存のブレークポイントのオンとオフを切り替えることができます。あなたの場合、コード全体の重要な場所にブレークポイントを追加し、デバッグしたくないときにそれらを無効にすることができます。そうすれば、後でそれらを再度使用するときに、それらを再度有効にすることができます。

有効化/無効化は、[デバッグ]> [ウィンドウ]> [ブレークポイント]メニュー(CTRL + D、B)の下にある[ブレークポイント]ウィンドウから利用できます。ウィンドウに「関数」列と「ファイル」列を含めることもできます。これは、関心のあるイベントハンドラーにあるブレークポイントを特定するのに役立つ場合があります。

実際にはそうではありませんが、コードの残りの部分で1つのブレークポイントとシングルステップ(F10/F11)を設定できます。

いいえ、恐れることはありません。各ブレークポイントを自分で設定する必要があります。

F9がブレークポイントを割り当てるためのショートカットキーであることが役立つ場合は、各メソッドの開始時にブレークポイントを設定し、そこからステップスルー(F10)/ステップイン(F11)を使用します。

0
Justin