5

特定の条件が満たされたときにデバッグモードに入る方法はありますか?

i == 1たとえば、 trueになる行でデバッグモードに入りたいとしましょう。

using System;

namespace ConditionalDebug
{
    public class Program
    {
        public static void Main(string[] args)
        {
            var r = new Random();
            var i = r.Next(2);
            i += r.Next(2);
            i += r.Next(2);
            i += r.Next(2);
            i += r.Next(2);
            i = 1;
            Console.WriteLine(i);
        }
    }
}

次のような条件付きブレークポイントを設定できることはわかっています。

条件付きブレークポイント

しかしもちろん、条件値が変更される可能性のあるコードの各行に条件付きブレークポイントを追加する必要があり、実際のアプリケーションでは非常に面倒になるため、これを使用することはできませんでした。

i == 1では、条件が満たされた行でデバッガーが中断するように、条件をグローバルに設定する方法はありますか?

ご協力いただきありがとうございます!

4

3 に答える 3

3

簡単な答えは「いいえ」です

長い答えは「実際にはそうではありませんが、ちょっと」です。あなたが望む行動に近づくためにあなたがすることができることがあります。

  • ウォッチウィンドウを使用して、手動でコードをステップ実行し、コードが変化することを確認できます。
  • 変数に関するすべての参照を検索し、変数を変更してブレークポイントを配置する可能性のあるすべてのステートメントを分離できます。
  • 上記を行うことはできますが、ラッパー関数を使用して(またはプロパティにする)、その関数(またはプロパティセッター)を介して変数の値を設定するだけで、条件付きブレークポイントを設定して比較できる単一のポイントが得られます。古い/新しい値。
  • すべての行にブレークポイントを設定し、それらすべての条件を一度に設定できます。VSプラグインまたはマクロを作成することで、これを自動化できる場合があります。
  • それは私を超えています-しかし、独自のデバッガーを作成し、「Xが変更されるたびにブレーク」を実装するなど、驚くほど複雑で素晴らしいことを行うことは可能だと確信しています。
于 2012-06-08T09:44:16.277 に答える
1

VSのブレークポイントウィンドウでは、複数のブレークポイントを選択できます。次に、マウスの右ボタンを使用して、1つのステップで両方に特定の条件を設定できます。

大丈夫ですか?

于 2012-06-08T09:13:49.073 に答える
1

いいえ、あなたがそれについて考えるなら、あなたは私がスコープ内にあるコードのすべての行を検証するようにデバッガーに求めていますが、これを見て、誰かが回避策を考えることができるかどうかを確認します:)

于 2012-06-08T09:23:56.537 に答える