35

私はVisual Studio 2010を使用していますが、この機能はC++で利用できることがわかりました。変数が.NETで特定の値を取得しているときにブレークポイントを設定できますか?

変数をいくつかの値に変更するコードをデバッグする必要があります。変数が特定の値を取得すると、特定のケースでコードをデバッグしたいと思います。私はif(var == value)を追加することができますが、それを行うためのエレガントな方法はありますか?

もう1つの質問は、変数が一般的に変更されたときにブレークポイントを設定できますか?

答えて

71

:、ブレークポイントの条件を設定してそれを右クリックし、この画面を取得する必要がありますするには

ある値を受け取る変数のように。これはブレークポイント条件と呼ばれます。作成するには、次の手順を実行します。

  • は、変数は次のように条件付きで
  • タイプをブレークポイントに
  • 右クリックを変更し、「条件」を選択する時点でブレークポイントを設定する「theNewValue == 42」

条件分岐が真と評価されたときにのみ、ブレークポイントがヒットします。

何かの理由で変数の値が変更されたときに壊れていた2番目の項目は、データブレークポイントと呼ばれます。これらはC++コードでのみ使用できます。これはC#、VB.NETまたは他の管理対象言語ではオプションではありません。

+0

なぜデータブレークポイントは管理対象言語で利用できないのですか? – Delashmate

+3

@Delashmateこれは、CLRのデバッグインフラストラクチャの制限です。 Visual Studioの手は、CLRが機能を提供するまで本質的に結びついています – JaredPar

+0

Ok、それはCLRがこのオプションをサポートしていない理由はそれほど複雑ではないと思いますか? – Delashmate

4

Express以外のVisual Studioエディションを使用している場合は、C#でbreakpoint conditionを使用してこれを実行できます。ブレークポイントの条件]ダイアログボックスで

は、そのよう myLocalVariable> 1

... を選ぶようを変更した、条件]ボックスで有効な式を入力します。式の値が変更されたときに中断したい場合。

に取得するにはオプション、 ブレークポイントウィンドウでブレークポイントを右クリックして、 条件...を選択し、下のスクリーンショットをチェックを変更しました。

Has Changed option for breakpoint conditions

+0

[OK]を、今私は私が探していたもの、理解変数は、一般的に変化してしまった場合に通知を取得することで、データブレークポイントを作成することを意味し、それはより一般的です。..そのように.. – Delashmate

+0

これをチェックするタイマーがある可能性があります – beppe9000

3

F9でブレークポイントを追加します - それを右クリックして["Condition..."を選択 - 今、あなたは、ブール条件を追加することができますし、その条件がtrueと評価された場合、ブレークポイントは打撃を受けるだろう。

0

これらの両方を行うことができます。

  1. VSにブレークポイントを設定します。マージンの赤い点を右クリックし、条件を追加を選択します。そこにはvar==valueと言うことができ、 "本当ですか"を選択できます。
  2. これは、上記ダイアログの[変更されました]オプションで実現できます。
3

ブレークポイントの範囲によって異なります。変数がローカルではないか、静的でない場合、あなたはできません。条件を設定することは確かに可能である

Enter image description here

条件を選んで...

2

条件付きブレークポイントを使用できます。私はあなたの質問がVS2010に固有であることを知っていますが、Visual Basicで条件付きブレークポイントを使用するには、VS2012をオンにしてから、管理された互換モードに切り替える必要があることに注意してください。なぜ、ここでどのように記述されている:

switching-to-managed-compatibility-mode-in-visual-studio-2013

関連する問題