Nehmen wir an, wir haben eine Funktion wie diese:
public void myStart()
{
for (int i = 0; i<10; i++) myFunction(i);
}
private int myFunction(int a)
{
a = foo(a);
a = bar(a);
return a;
}
private int foo(int a)
{
//do something here
//something gnarly here
//etc
return aValue;
}
private int bar(int a)
{
// do something here
//return aValue;
}
Aus irgendeinem Grund funktioniert unser Code nicht. Vielleicht wirft es einen Fehler, vielleicht gibt es den falschen Wert zurück, vielleicht steckt es in einer Endlosschleife fest.
Das erste, was ein Programmierer im ersten Jahr programmiert, ist das Drucken auf Konsole / Standard (nachdem er gelernt hat, wie man Hello World druckt, bevor er lernt, einen Debugger zu verwenden).
Zum Debuggen dieses Codes können sie beispielsweise Folgendes tun:
private int myFunction(int a)
{
print("before foo: a=" + a);
a = foo(a);
print("before bar: a=" + a);
a = bar(a);
return a;
}
private int foo(int a)
{
//do something here
print ("foo step1: a=" + a);
//something gnarly here
print ("foo step2: a=" + a + " someOtherValue="+ someOtherValue + " array.length= " + someArray.length());
//etc
return aValue;
}
private int bar(int a)
{
// do something here
//return aValue;
}
Jetzt führen sie den Code aus und erhalten einen großen Konsolendruck, mit dem sie nachverfolgen können, wo etwas schief geht.
Eine Alternative besteht natürlich darin, an jedem Punkt Haltepunkte zu setzen und den Code schrittweise durchzugehen.
Ein Hauptvorteil des Druckens auf der Konsole besteht darin, dass der Entwickler den Wertefluss auf einmal sehen kann, ohne durch Schritte usw. klicken zu müssen.
Der Nachteil ist jedoch, dass Ihr Code dann mit all diesen Druckanweisungen durchsetzt ist, die dann entfernt werden müssen.
(Ist es vielleicht möglich, den Debugger anzuweisen, nur bestimmte Werte in ein Protokoll auszudrucken? Die Haltepunkte können dann einfach hinzugefügt oder entfernt werden, ohne den Code tatsächlich zu ändern.)
Ich verwende immer noch den Konsolendruck als primäre Debugging-Methode. Ich frage mich, wie häufig / effektiv dies im Vergleich zu etwas anderem ist.