Come impostare i punti di interruzione condizionali in Visual Studio?


133

Esiste un modo semplice per impostare i punti di interruzione condizionali in Visual Studio?

Se voglio colpire un breakpoint solo quando il valore di una variabile diventa qualcosa, come posso farlo?


11
Si noti che Express Edition non dispone di questa funzionalità.
Alexei Levenkov,

1
Sto usando Express 2015 e ha la capacità di breakpoint condizionali
mark.monteiro

1
L'edizione comunitaria del 2017 ha anche punti di interruzione condizionati
PentiumPro200,

Risposte:


174

Impostare un punto di interruzione come al solito. Fai clic destro. Fai clic su Condizione.


1
In VS 2015 devi passare con il mouse sopra il punto di interruzione e fare clic sull'icona a forma di ingranaggio per impostare le condizioni
mark.monteiro

Intendi, fai clic con il pulsante destro del mouse, imposta la condizione, ottieni l'errore "Condizione per un punto di interruzione non riuscito".
Toby Caulk,

1
La risposta dovrebbe includere anche la sintassi per le istruzioni condizionali o un collegamento informativo.
Andrew

50

Quando si utilizza Express Edition è possibile provare questo:

#if DEBUG
    if( fooVariable == true )
        System.Diagnostics.Debugger.Break();
#endif

if statement assicura che in release build non sarà presente breakepoint.


3
Questo ha un grande vantaggio in termini di prestazioni / risparmio di tempo. Stavo ripetendo ogni potenziale int 'id' in un mio programma (solo circa 3,5 milioni), che richiede solo un paio di secondi. Stavo cercando di utilizzare il breakpoint condizionale ma poiché non si trovava in un ramo condizionale ha rallentato la velocità di esecuzione al punto in cui dopo alcuni minuti avrei semplicemente terminato la sessione di debug. L'uso del breakpoint compilato lo ha reso istantaneo.
Goldfish Sandwich

35

Visual Studio offre molte opzioni per i breakpoint condizionali:

Per impostare uno di questi voi

  1. Imposta un punto di interruzione.
  2. Fai clic con il pulsante destro del mouse sul punto di interruzione e nel menu a comparsa seleziona un'opzione adatta a te.

Queste opzioni sono le seguenti:

  • È possibile impostare una condizione, in base all'espressione di codice fornita (selezionare Condizione dal menu a comparsa). Ad esempio, puoi specificare quella foo == 8o qualche altra espressione.
  • È possibile attivare i punti di interruzione dopo che sono stati colpiti un certo numero di volte. (seleziona Conteggio visite dal menu a comparsa). Questa è un'opzione divertente con cui giocare poiché in realtà non sei limitato a rompere su un certo numero di colpi, ma hai anche opzioni per alcuni altri scenari. Lascio a te esplorare le possibilità.
  • È possibile impostare i filtri su ID processo, ID thread e nome macchina (selezionare Filtro dal menu a comparsa)

16

Solo un altro modo di farlo, (o se stai usando express) aggiungi la condizione nel codice:

if(yourCondition)
{
    System.Diagnostics.Debugger.Break();
}

9
  1. Imposta il punto di interruzione sulla linea
  2. Clic destro sulla palla ROSSA
  3. Ha scelto il punto di interruzione condizionale
  4. Condizioni di installazione

8

Scrivere la condizione reale può essere la parte difficile, quindi tendo a

  1. Imposta un breakpoint regolare .
  2. Esegui il codice fino a quando il breakpoint non viene colpito per la prima volta.
  3. Usa la finestra immediata (Debug> Windows> Immediata) per testare la tua espressione .
  4. Fai clic con il pulsante destro del mouse sul punto di interruzione, fai clic su Condizione e incolla l'espressione .

Vantaggi dell'utilizzo della finestra immediata:

  • Ha IntelliSense .
  • Puoi essere sicuro che le variabili nell'espressione siano nell'ambito quando l'espressione viene valutata.
  • Puoi essere sicuro che la tua espressione ritorni vera o falsa .

Questo esempio si interrompe quando il codice fa riferimento a una tabella con il nome "Impostazione":

table.GetTableName().Contains("Setting")

5

Crea un punto di interruzione come faresti normalmente, fai clic con il pulsante destro del mouse sul punto rosso e seleziona "condizione".


4
  1. Impostare un punto di interruzione come al solito
  2. Fare clic con il tasto destro del mouse sul punto di interruzione e selezionare Condizione
  3. Vedrai una finestra di dialogo che dice "Condizione breakpoint"
  4. Inserisci una condizione nel campo, ad es. "I == 5"

Il punto di interruzione verrà colpito solo quando ho 5 anni.


4
  1. Impostare un punto di interruzione come al solito.
  2. Fare clic con il tasto destro del mouse sul marker del punto di interruzione
  3. Fai clic su "Condizione ..."
  4. Scrivi una condizione, puoi usare nomi di variabili
  5. Seleziona "È vero" o "È cambiato"

4

Su Visual Studio 6.0

Alt+ F9!!!


1
-1) Questo non funziona in VS 2012 2) Questa domanda ha già molte altre (migliori) risposte e 3) chi se ne frega di VS 6.0 (rilasciato nel 1998)? 4) Anche se qualcuno si preoccupa di VS 6, la domanda è taggata con .Net che non aveva supporto fino alla prossima versione di VS (Visual Studio .Net)
Tim Medora

7
Bene, le altre risposte non funzionano su VS 6.0. Quindi ho pubblicato una soluzione.
Vorac,

1

Imposta breakpointcome fai normalmente, fai clic con il pulsante destro del mouse sul punto di interruzione e seleziona l' condionopzione e imposta la tua condizione.


1

Creare un punto di interruzione della funzione condizionale:

  1. Nella finestra Punti di interruzione, fare clic su Nuovo per creare un nuovo punto di interruzione.

  2. Nella scheda Funzione, digitare Inverti per Funzione. Digitare 1 per Linea, digitare 1 per Carattere, quindi impostare Lingua su Base.

  3. Fai clic su Condizione e assicurati che la casella di controllo Condizione sia selezionata. Digitare instr.length > 0per condizione, assicurarsi che l'opzione è true sia selezionata e quindi fare clic su OK.

  4. Nella finestra di dialogo Nuovo punto di interruzione, fare clic su OK.

  5. Nel menu debug, fare clic su Start.


0

Se vieni da Google, questa risposta potrebbe essere ciò che stai cercando.

  1. Fare clic su Debug> Nuovo punto di interruzione> Punto di interruzione funzione inserisci qui la descrizione dell'immagine

  2. lì scegli il Breakpoint condizionale.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.