Das Debuggen ist ein sehr nützliches Tool zum Überprüfen des Status der Objekte und Variablen in Ihrem Code zur Laufzeit.
Wie bereits in den obigen Antworten erwähnt, ist das Debuggen äußerst hilfreich, in einigen Fällen ist es jedoch begrenzt.
Nach meiner Erfahrung ist die Verwendung des Debuggers sehr nützlich, da hiermit falsche Annahmen über den Zustand meines Codes aufgedeckt werden können. Einige Leute sind nicht so schlau darin, den Code zu lesen, um einen Fehler zu finden. Daher kann das Debuggen dazu beitragen, falsche Annahmen aufzudecken, die Sie oder ein anderer Entwickler über den Status des Codes gemacht haben.
Möglicherweise erwarten Sie, dass ein Parameter bei der Übergabe an eine Methode niemals null ist. Überprüfen Sie diesen Fall also nie und fahren Sie mit der Methode fort, als wäre dieser Parameter niemals null. Die Realität ist, dass der Parameter irgendwann null wird, selbst wenn Sie als Vorbedingung für die Methode festlegen, dass der Parameter niemals null sein soll. Es wird immer passieren.
Im Gegensatz zur Nützlichkeit von Debuggern in den oben genannten Beispielen finde ich es schwierig und nicht sinnvoll, diese zu verwenden, wenn Multithreading (dh Parallelität, asynchrone Verarbeitung) involviert ist. Es kann helfen, aber es ist leicht, die Orientierung im Multithread-Nebel zu verlieren, wenn die Haltepunkte des Debuggers in einem Thread an Punkt A und in einem vollständig separaten Thread an Punkt B getroffen werden. Der Entwickler muss den neuen Haltepunkt verschieben. " Denkprozess "ganz oben auf dem" Stapel "seines Gehirns" und orientieren sich am Code am Punkt des neuen Haltepunkts. Nachdem die Relevanz von Haltepunkt B abgenommen hat, wechselt der Entwickler zurück zum ersten Haltepunkt und muss sich daran erinnern, wonach er / sie vor dem Auslösen von Haltepunkt B gesucht hat. Ich weiß, dass dies eine verwirrende Erklärung sein kann.
Auch die Unvorhersehbarkeit von gleichzeitigem Code kann den Entwickler beim Debuggen von gleichzeitigem Code weiter ablenken.
Fazit meiner ehrlichen Meinung nach:
- Debugging bei gleichzeitiger Verwendung = erhöhte Tendenz, den Fokus des "Debugging-Denkmusters" zu verlieren
und
- jederzeit = erhöhte Debugging-Produktivität, da Ihre Aufmerksamkeit nicht durch unerwartete Haltepunkte (unerwartet aufgrund der Rennbedingungen) unterbrochen wird.