Disons que nous avons une fonction comme celle-ci:
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;
}
Maintenant, pour une raison quelconque, notre code ne fonctionne pas. Peut-être que cela génère une erreur, peut-être qu'il renvoie la mauvaise valeur, peut-être qu'il est coincé dans une boucle infinie.
La première chose que tout programmeur de première année est d'imprimer sur console / sortie standard (après avoir appris à imprimer Hello World avant d'apprendre à utiliser un débogueur).
Par exemple, pour déboguer ce code, ils peuvent effectuer les opérations suivantes:
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;
}
Maintenant, ils exécutent le code, ils obtiennent une grande impression de la console, qu'ils peuvent parcourir pour localiser les problèmes.
Une alternative est bien sûr de définir des points d'arrêt et de parcourir le code à chaque point.
Un avantage majeur de l'impression sur console est que le développeur peut voir le flux des valeurs en une seule fois, sans avoir à cliquer sur les étapes, etc.
Mais l'inconvénient est que votre code est ensuite criblé de toutes ces instructions d'impression qui doivent ensuite être supprimées.
(Est-il possible de dire au débogueur d'imprimer uniquement certaines valeurs dans un journal?, Les points d'arrêt peuvent ensuite être facilement ajoutés ou supprimés sans réellement modifier le code.)
J'utilise toujours l'impression sur console comme méthode de débogage principale, je me demande à quel point c'est courant / efficace par rapport à autre chose.