6

Ho visto questo nel mio Visual C# feed 2008 RSS per sempre la società:In che modo: creazione di un punto di interruzione mediante condizioni? [C# Express]

http://lincolnfair.net/oldLincolnFair/mad.jpg

Sono abbastanza sicuro che questo è un VS 2010 dispongono solo, ma mi chiedevo se ci è in ogni caso per replicare questo in VS 2008?

+0

Questo è in Visual Studio da anni. Almeno dal VS2005; possibilmente VS2003. Sono abbastanza sicuro che non fosse in Visual Studio 6;) – Dan

+0

Che dire nell'edizione Express? – Kredns

+2

Non ho idea al riguardo, ho paura di non aver notato che lo stavi usando. Potresti voler taggare la tua domanda con 'visual studio express'? – Dan

risposta

19

Simile a @Relster Ho un frammento di codice con il seguente

#if DEBUG 
    if(node.Name == "Book") 
     System.Diagnostics.Debugger.Break(); 
#endif 

Dove node.Name == "Book" modifiche in base alla condizione che voglio verificare. il wrapper #if DEBUG si assicura che i controlli non raggiungano mai il codice di rilascio.

Questo è anche molto più veloce rispetto all'utilizzo dei punti di interruzione condizionale in Visual Studio. Quando si utilizza lo studio di visualizzazione bp condizionale incorporato deve entrare nell'app, mettere in pausa tutti i thread, valutare l'espressione e determinare se è vera ogni volta che raggiunge il punto di interruzione. In un ciclo ristretto questa può essere la differenza tra quasi l'esecuzione completa dell'esecuzione e l'esecuzione a passo d'uomo.

+0

Up-vote per l'uso di "#if DEBUG ...#endif "(Stavo per fare un commento sulla soluzione accettata in questo senso) – Alconja

+0

Ho dovuto accettare la tua risposta perché la mancanza di aggiornamento in Relster. – Kredns

4

Si può fare anche in VS 2008. Sono sicuro che ci sono molti modi per farlo, ma un modo è quello di fare clic destro sul punto rosso nel margine di un punto di interruzione esistente & selezionare condition..., poi basta dargli una condizione che restituisce un bool e sarà solo rompersi se è vero. L'istruzione condizionale dovrebbe avere accesso a tutto ciò che è nell'ambito della linea in cui è impostato il punto di interruzione.

Ci sono anche altre opzioni in quel menu di scelta rapida che consentono di filtrare ciò che causerà un'interruzione (ad esempio solo determinati thread), interrompere in base al numero di volte in cui il punto di interruzione è stato raggiunto, eseguire macro quando si raggiunge il punto di interruzione , ecc

+1

Quando faccio clic con il pulsante destro del mouse sul punto di interruzione tutto quello che vedo è: elimina punto di interruzione, disattiva punto di interruzione. – Kredns

+1

Hmmm ... stai usando l'edizione rapida forse? – Alconja

+1

yerp mancante da espresso –

1

l'altro modo per farlo è rendere le proprie condizioni e utilizzare una chiamata a:

System.Diagnostics.Debugger.Break(); 

Mentre non può essere sofisticato come il modo VS2010 di impostare punti di interruzione, è possibile ottenere il stesso effetto con il minimo sovraccarico del codice. Ricordati solo di prendere quelle cose quando costruisci il codice di rilascio.

Nota: in VS2008 e VS2005, è possibile impostare un punto di interruzione condizionale impostando un punto di interruzione regolare (F9 o doppio clic in gronda), quindi facendo clic con il pulsante destro del mouse su tale punto di interruzione per impostare la "condizione ...". La possibilità di impostare i breakpoint condizionali NON è disponibile in VS2008 Express Edition.

+0

Ho eliminato la mia risposta a causa della sovrapposizione, ma è necessario ricordare che VS 2008 Express non ha il supporto integrato per i punti di interruzione condizionali. –

+0

@Sam Saffron, dovresti modificare la sua risposta per diventare la risposta onnicomprensiva. – mmcdole

Problemi correlati