35

Utilizzo Visual Studio 2010 e so che questa funzionalità è disponibile in C++.Posso impostare un punto di interruzione quando la variabile ottiene un valore specifico in .NET?

Ho bisogno di eseguire il debug del codice, che modifica una variabile in più valori. Voglio eseguire il debug del codice in un caso specifico, quando la variabile ottiene un valore specifico. So che posso aggiungere if(var == value), ma c'è un modo elegante per farlo?

Un'altra domanda, posso impostare un punto di interruzione quando una variabile viene modificata in generale?

risposta

71

E 'certamente possibile impostare una condizione come una variabile che riceve un certo valore. Questo è noto come condizione di breakpoint. Per crearne uno, fai quanto segue.

  • Impostare un punto di interruzione in corrispondenza del punto variabile cambia
  • clic destro sul punto di rottura e selezionare "Condizione"
  • Digitare il condizionale come "theNewValue == 42"

Ora il punto di interruzione verrà colpito solo quando la tua condizione sarà valutata come vera.

Il secondo elemento richiesto, interruzione quando un valore di variabile cambia per qualsiasi motivo, è noto come punto di interruzione dati. Questi sono disponibili solo per il codice C++. Non è un'opzione in C#, VB.NET o in qualsiasi altra lingua gestita.

+0

sai perché il punto di interruzione dei dati non è disponibile nelle lingue gestite? – Delashmate

+3

@Delashmate è un limite nell'infrastruttura di debug del CLR. Le mani di Visual Studio sono essenzialmente legate fino a quando CLR fornisce la capacità – JaredPar

+0

Ok, spero che non sia una domanda così complicata, perché il CLR non supporta questa opzione? – Delashmate

4

Fintanto che si utilizza un'edizione di Visual Studio diversa da Express, è possibile ottenere ciò in C# utilizzando breakpoint condition.

Nella finestra di dialogo Breakpoint Condizione, immettere una valida espressione nella casella Condizione, come ad esempio myLocalVariable> 1

e

... scegliere è cambiata se vuoi interrompere quando il valore dell'espressione è cambiato.

per arrivare al è cambiato opzione, fare clic con il punto di interruzione nella finestra di punti di interruzionee selezionare Condizione ..., quindi controllare la schermata qui sotto.

Has Changed option for breakpoint conditions

+0

Ok, ora ho capito, quello che mi è stato cercato è quello di ottenere una notifica quando variabile ha cambiato in generale, significa creare break point di dati .. in questo modo è più generale .. – Delashmate

+0

potresti avere un timer che controlla questo – beppe9000

3

Aggiungere un punto di interruzione con F9 - tasto destro del mouse e selezionare "Condition..." - ora è possibile aggiungere una condizione booleana e il punto di interruzione avrete colpito soltanto se tale condizione restituisce true.

0

Puoi fare entrambe queste cose.

  1. Impostare il punto di interruzione in VS. Fare clic con il tasto destro del mouse sul punto rosso sul margine e selezionare Aggiungi condizione. Qui puoi dire var==value e selezionare "È vero".
  2. È possibile ottenere questo risultato con l'opzione "È cambiato" nella finestra di dialogo in alto.
3

Dipende dalla portata del punto di interruzione. Se la variabile non è locale o non statica, non sarà possibile.

per impostare la condizione di un punto di interruzione, a destra clic su di esso e si dovrebbe ottenere questa schermata:

Enter image description here

Scegli Condizione ...

2

È possibile utilizzare i punti di interruzione condizionali. So che la tua domanda era specifica per VS2010, ma tieni presente che da VS2012 in poi, devi passare alla modalità di compatibilità gestita, per utilizzare i punti di interruzione condizionali in Visual Basic. Perché e come è descritto qui:

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

Problemi correlati