2015-09-04 12 views

risposta

16

un punto di interruzione condizionale non è qualcosa supportato dall'hardware; i processori supportano solo i breakpoint incondizionati. Quello che succede è che quando si crea un punto di interruzione condizionale, il debugger inserisce un punto di interruzione incondizionato nel codice. Quando viene colpito il punto di interruzione incondizionato, il debugger valuta la condizione e, se fallisce, riprende l'esecuzione. Poiché ogni passaggio del punto di interruzione ora richiede l'arresto e il coinvolgimento del debugger, il codice viene eseguito molto più lentamente.

A seconda della frequenza che il codice viene eseguito e quanto tempo il codice necessario per costruire è spesso più veloce di appena aggiungere un

if (your condition) 
{ 
    System.Diagnostics.Debugger.Break(); 
} 

o simili e semplicemente ricostruire la vostra applicazione.

+0

grazie ... bella spiegazione –

+0

"Debugger.Break()" funziona anche molto bene in combinazione con Modifica e Continua (se disponibile). Quindi non è nemmeno necessario ricostruire (almeno non immediatamente). – Antitoon

+0

Il motivo per cui un punto di interruzione condizionale è letteralmente di ordine di grandezza più lento di un se seguito dall'istruzione break? Seriamente, provalo, è ridicolo. –

Problemi correlati