2015-09-04 13 views

Odpowiedz

16

Warunkowe przerwania nie jest czymś obsługiwane przez sprzęt; procesory obsługują tylko bezwarunkowe punkty przerwania. Chodzi o to, że kiedy tworzysz warunkowy punkt przerwania, debugger wstawia bezwarunkowy punkt przerwania do twojego kodu. Po otrzymaniu bezwarunkowego punktu przerwania debugger ocenia twój stan, a jeśli się nie uda, wznawia wykonywanie. Ponieważ każde przejście przez punkt przerwania wymaga teraz zatrzymania i włączenia debuggera, kod działa znacznie wolniej.

W zależności od tego, jak często, że kod wykonuje i jak długo kod potrzebny do budowy to często szybciej po prostu dodaj

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

lub podobny i po prostu odbudować swoją aplikację.

+0

dzięki ... ładne wyjaśnienie –

+0

"Debugger.Break()" również gra bardzo ładnie w połączeniu z Edit i Continue (jeśli są dostępne). Wtedy nie musisz nawet odbudowywać (przynajmniej nie od razu). – Antitoon

+0

Dlaczego warunkowy punkt przerwania jest dosłownie o rząd wielkości wolniejszy niż po którym następuje instrukcja break? Poważnie, spróbuj tego, to niedorzeczne. –