2015-09-04 5 views

Antwort

16

Ein bedingter Haltepunkt ist nicht etwas von der Hardware unterstützt; Prozessoren unterstützen nur unbedingte Breakpoints. Wenn Sie einen bedingten Haltepunkt erstellen, fügt der Debugger einen unbedingten Haltepunkt in Ihren Code ein. Wenn der unbedingte Haltepunkt erreicht wird, wertet der Debugger Ihre Bedingung aus, und wenn sie fehlschlägt, wird die Ausführung gerade fortgesetzt. Da jeder Durchlauf durch die Haltepunktposition nun angehalten und der Debugger einbezogen werden muss, wird der Code viel langsamer ausgeführt.

Je nachdem, wie oft, dass Code ausgeführt wird und wie lange Ihr Code ist es oft schneller nur zu bauen nahm ein

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

oder ähnliches hinzuzufügen und nur Ihre App wieder aufzubauen.

+0

danke ... nette Erklärung –

+0

"Debugger.Break()" spielt auch sehr gut in Kombination mit Bearbeiten und Weiter (wenn verfügbar). Dann müssen Sie nicht einmal neu aufbauen (zumindest nicht sofort). – Antitoon

+0

Warum ist ein bedingter Knickpunkt buchstäblich um Größenordnungen langsamer als ein if, gefolgt von der break-Anweisung? Ernsthaft, probier es aus, es ist lächerlich. –

Verwandte Themen