2009-09-16 8 views
6

Visual  スタジオ  2008を使用して、自分の気分に応じてデバッグを開始するには、プロセスにアタッチしてブレークポイントをヒットさせるか、System.Diagnostics.Debugger.Break()をコード内の適切な場所に置き、ブレーク時にデバッグを開始します。ポイント。Attach to ProcessにSystem.Diagnostics.Debugger.Break()を使用する利点は何ですか?

後者が必要な場合があります。私は間のわずかな違いになど興味

Q):二...

System.Diagnostics.Debugger.Break(); 

質問のデバッグモードで>実行している - についてF5を話していない

各オプション?

Q)それぞれを使用することの利点と欠点は何ですか?

私はそれを始める...

Debugger.Break()の欠点= はDebugger.Break()のを忘れて、そこにそれらを残しましょう!

Debugger.Break()利益=あなたは、まだプロセスに接続されている場合にヒットするだろうコードであってもよく、他に、不要なブレークポイントを押すことなくしたい場所を正確にデバッグを開始します。

私はちょうど私が私がデバッグの正しい方法を理解していないよ()Debugger.Breakを使用している場合は、間違いなく言うだろう嫌いを横取りよ嫌い

を横取り。

私はちょうど私が状況に応じて、デバッグのさまざまな方法があると信じて、ここで会話を開始しようとしています。

答えて

12

私は一度起動時に多くのことをしたプラグインベースのアプリに取り組んでいました。それは他の多くのものの中でプラグインの発見をするでしょう。私はそうF5はオプションではありませんでした、のVisual Studioから直接実行されますが、デバッガにアタッチできなかった多くの時間が、私は起動時に起こってすべてのものをデバッグする必要があるため、どちらかの選択肢ではありませんでした。私はプロセスにアタッチすることでそれを捕まえることは決してできません。したがって、私はちょうど私が欲しいところでDebugger.Break()を設定しました。

もう1つの例。私はPowerShell用のコマンドレットを書いていました。 Visual Studioで実行しないもの。 PowerShellのコマンドラインから実行します。彼らは通常、素早く小さなアプリケーションであり、にアタッチする方法はありません。にアタッチしてください。 BFreeの答えに加えて

+3

スタートアップコードに侵入するのは、主要な使用例のようです。 –

6

は、私が不十分に設計されたレガシー製品を扱う際に時折有用であることがブレークを見つけました。この特定の製品は、例外を飲み込むか無視するという悪い習慣を持ち、そのロギングメカニズムは正しく機能しませんでした。それは実行時に動作させるために顧客に「ラッキー」を要求する多くの良いプラクティスに頻繁に違反していました。私は、デバッグのために集中していた特定のスポットに、コードを簡単に追加し始めました:

これにより、顧客がいつ実行したときにコードが破られることなく、何が起こっていたのか、何が違反されていたのかがわかりやすくなりました。 (私のパイプの夢はこれも、うまくいけば、やや難解な私の同僚にはうまくいきます)

ええ、これは特に良い習慣ではないことを私は知っています。しかし、私を信頼してください。あなたがそのコードベースを使って動機づけをすれば、あなたは何か似たようなことをしたでしょう。 ;)

関連する問題