Vom Übersetzer. Das Debuggen von Software für viele Programmierer ist eine langweilige und routinemäßige Aufgabe. Trotzdem ist es einfach unmöglich, auf das Debuggen zu verzichten. Dieser Beitrag ist eine Übersetzung des
Originalartikels von Nick Karnik, in dem er seine eigenen Beobachtungen über Fehler und Mängel beim Debuggen teilt, die nicht nur bei unerfahrenen Programmierern, sondern auch bei Profis zu finden sind.
Wir alle schreiben Code, der manchmal leider nicht funktioniert. Dies ist normal, nur ein Teil des Entwicklungsprozesses. Wenn das Programm einen Fehler ausgibt, wissen Sie manchmal einfach nicht, was Sie als Nächstes tun und wie Sie ihn beheben können. Keine Sorge - alle Probleme sind gelöst und selbst die erfahrensten Programmierer haben Fehler.
Skillbox empfiehlt: Praktischer Jahreskurs "PHP-Entwickler von Grund auf neu für PRO".
Wir erinnern Sie daran: Für alle Leser von „Habr“ - ein Rabatt von 10.000 Rubel bei der Anmeldung für einen Skillbox-Kurs mit dem Promo-Code „Habr“.
Um Fehler zu minimieren, müssen sowohl Programmier- als auch Debugging-Kenntnisse entwickelt werden.
Sie selbst sind in zwei Typen unterteilt - logisch und syntaktisch.
Die häufigsten Entwicklerfehler
Fehlende FehlermeldungenEines der schwierigsten Szenarien ist, wenn die Anwendung abstürzt und keine Meldung über den Grund für das Geschehen vorliegt. Um das Problem im Code beheben zu können, müssen Sie wissen, ob es beim Start auftritt oder bereits im Prozess ist. Sie können dies herausfinden, indem Sie am Anfang des Codes die Protokollierung von Anwendungsnachrichten hinzufügen.
Wenn kein Protokoll vorhanden ist, stürzt das Programm höchstwahrscheinlich beim Laden ab, noch bevor etwas in das Protokoll geschrieben wird.
Wenn Sie ein Nachrichtenprotokoll haben, gehen Sie es durch und finden Sie die mögliche Ursache für den Absturz. Um die Suche einzugrenzen, lohnt es sich, das Programm die Hauptereignisse im Verlauf seiner Arbeit protokollieren zu lassen. In diesem Fall ist das Problem leichter zu finden.
Phobie-FehlermeldungenWenn es sich um Frontend handelt, werden Fehler normalerweise entweder in der Anwendung selbst, in der Benutzeroberfläche oder in der Entwicklerkonsole angezeigt. Manchmal werden Nachrichten im Backend über das Terminal oder im Ereignisprotokoll angezeigt. Unabhängig von der Art des Fehlers haben Anfänger Angst vor solchen Nachrichten und lesen sie nicht einmal.
Dies ist der Hauptgrund, warum einige Entwickler so lange brauchen, um zu debuggen.
Zunächst ist es notwendig, den Fehler zu untersuchen und alles auf die gründlichste Weise zu analysieren.
Unwilligkeit, Systemprotokolle zu studierenEinige Programme schreiben Protokolldateien oder generieren ein Ereignisprotokoll. All dies ist nur ein Speicher mit nützlichen Informationen. Wenn Sie im Ereignisprotokoll keinen genauen Hinweis auf die Fehlerursache finden konnten, suchen Sie nach Meldungen über den Fehler oder umgekehrt über den erfolgreichen Start von etwas (Modul, Dienst). Dies hilft, die Fehlerursache zu verstehen.
Fehlendes AblaufverfolgungsprotokollDie Ablaufverfolgung hilft, den Prozess des Programms zu verfolgen und mit Daten zu arbeiten. Das Aufzeichnen von Trace-Nachrichten während der Ausführung der Software vereinfacht den Debugging-Prozess. Das Ablaufverfolgungsprotokoll ist eine einfache Möglichkeit, die Funktionsweise Ihrer Anwendung zu erfahren.
Unfähigkeit, schrittweise zu arbeitenViele Entwickler schreiben große Codeteile, nach denen sie als Teil der Anwendung kompiliert und getestet werden. Es ist jedoch zu beachten, dass die Zeit für die Suche nach Fehlern im Code proportional zu seinem Volumen ist.
Wenn es viele Änderungen gibt, müssen Sie viel Zeit damit verbringen, nach einem Problem zu suchen, das plötzlich auftritt. Es ist am besten, schrittweise zu arbeiten. Nehmen Sie kleine Änderungen vor, kompilieren Sie Code, testen Sie die Anwendung - und wiederholen Sie dies alles. Wenn Sie Änderungen in kleinen Iterationen implementieren, beschleunigt dies letztendlich den Prozess der Erstellung der Anwendung. Wenn etwas nicht funktioniert, können Sie schnell erkennen, warum.
Nachdem ich meinen Code geschrieben habe, überarbeite ich ihn häufig, um das Schreiben zu vereinfachen.
Unwilligkeit, automatische Tests durchzuführenMithilfe von Komponententests und End-to-End-Testautomatisierung können Sie potenzielle Fehler identifizieren, sobald sie auftreten. Eine der Fehlerursachen ist, dass Entwickler den Code überarbeiten, bevor er gründlich getestet wird, dh Änderungen werden nicht automatisch getestet.
Unfähigkeit, mit der Ausnahmemethode zu arbeitenWenn Sie die Grundursache Ihres Problems nicht ermitteln können, müssen Sie die Ausnahmemethode verwenden. Sie können neue Codeblöcke auskommentieren, um zu überprüfen, ob der Fehler behoben ist. Dies hilft bei der Diagnose des Problems.
Während des Debuggens können Sie eine bestimmte Hypothese formulieren und versuchen, sie mit der oben vorgeschlagenen Methode zu beweisen oder zu widerlegen.
Kopieren und Einfügen mit StackOverflowOft kopieren Entwickler Code aus StackOverflow und fügen ihn ein, ohne eine klare Vorstellung davon zu haben, was der kopierte Abschnitt tut. Solche Handlungen haben eine Reihe negativer Konsequenzen, von denen einige implizit sind. Achten Sie unbedingt auf das, was Sie hinzufügen, und versuchen Sie zu verstehen, welche Funktionen für die Ausführung des eingefügten Codes verantwortlich sind.
Übrigens, oft, wenn ich eine Frage zu StackOverflow stelle, beantworte ich sie etwas später selbst, weil ich während des Schreibvorgangs über ein Problem nachdenke.
Das gleiche passiert während einer Diskussion über ein Problem in Ihrem Team. Sie selbst finden eine Lösung für Ihre Frage, einfach weil Sie über die Ursache des Problems nachdenken.
Zurückhaltung bei der erneuten Überprüfung des CodesEine der erfolgreichsten Debugging-Methoden, die ich kenne, besteht darin, Ihren Code immer wieder zu studieren. In einigen Fällen hilft es, einen Code von Grund auf neu zu schreiben.
Unfähigkeit, Funktionsaufrufe zu verfolgenManchmal hilft es auch, Funktionsaufrufe in Ihrer Anwendung zu lernen. Sie müssen nur die Variablen und ihre erwarteten Werte überprüfen. Dabei finden Sie in Ihrem Programm Problembereiche, die zu seinem seltsamen Verhalten führen.
Unwissenheit des DebuggersSie müssen auf jeden Fall lernen, wie man den Debugger benutzt. Dies ist die beste Investition der Zeit. Alle IDEs verfügen über leistungsstarke Debugging-Tools, die ungefähr gleich funktionieren. Lernen Sie diese Tools und Sie werden die meisten Ihrer Probleme beim Schreiben von Code lösen.
Skillbox empfiehlt: