Traçage arrière
Le suivi arrière consiste à localiser un point d' extrémité à un événement associé à la fonction (voir ci-dessous). Une fois sur place, un point d'arrêt est placé dans le débogueur. La fonctionnalité est déclenchée et lorsque le débogueur s'arrête. La pile d'appels est revue pour retracer le chemin d'appel. En remontant la pile d'appels, vous pouvez prendre des notes sur les états variables ou placer de nouveaux points d'arrêt pour inspecter à nouveau l'événement.
La fonctionnalité est à nouveau déclenchée et le débogueur s'arrête aux nouveaux points d'arrêt. Vous pouvez ensuite répéter le traçage arrière ou effectuer un traçage avant jusqu'à ce que l'objectif soit trouvé.
Avantages et inconvénients
- Il est toujours plus facile de remonter la pile d'appels et de voir comment vous êtes arrivé quelque part.
- Il pourrait y avoir des millions de conditions qui doivent être remplies avant d'atteindre un point final. Si vous connaissez déjà le point final, vous vous êtes épargné beaucoup de travail.
- Si la fonctionnalité est cassée. Il est possible que vous n'atteigniez jamais le point final et que vous perdiez du temps à essayer de comprendre pourquoi.
Découverte de point de terminaison
Pour déboguer une fonctionnalité, vous devez savoir où dans le code source l'objectif final est atteint. Ce n'est qu'à partir de ce point que vous pouvez revenir en arrière pour voir comment le code y est arrivé. Un exemple; Comprendre comment l'annulation est effectuée. Vous savez où dans le code les choses sont annulées, mais vous ne savez pas comment les choses y arrivent . Ce serait un candidat pour un retour en arrière afin de comprendre comment la fonctionnalité fonctionne.
Tracé vers l'avant
Le suivi vers l'avant consiste à localiser un point de départ pour un événement associé à une fonction (voir ci-dessous). Une fois sur place, des messages de journalisation sont insérés dans le code source ou des points d'arrêt sont définis. Ce processus est répété à mesure que vous vous éloignez du point de départ jusqu'à ce que vous découvriez l' objectif de la fonctionnalité.
Avantages et inconvénients
- C'est le point de départ le plus simple pour trouver une fonction.
- La complexité du code réduit l'efficacité du suivi direct. Plus il y a de conditions dans le code, plus vous avez de chances d'aller dans la mauvaise direction.
- Le suivi direct entraîne souvent la définition de points d'arrêt qui seront déclenchés par des événements non liés. Interrompre le processus de débogage et interférer avec votre recherche.
Découverte du point de départ
Vous pouvez utiliser des mots clés, des identifiants d'interface utilisateur (identifiants de bouton, noms de fenêtres) ou des écouteurs d'événements faciles à trouver associés à la fonction. Par exemple, vous pouvez commencer par le bouton utilisé pour déclencher une fonction d' annulation .
Processus d'élimination
Vous pouvez considérer cela comme le point milieu par rapport aux positions de point de départ et de fin . Vous effectuez un processus d'élimination lorsque vous savez déjà qu'un morceau de code est utilisé dans une fonctionnalité, mais ce n'est ni le début ni la fin de la fonctionnalité.
La direction que vous prenez à partir du point médian dépend du nombre d'entrées et de sorties. Si le bloc de code est utilisé à de nombreux endroits, le traçage arrière à partir de cette position peut prendre beaucoup de temps car ils doivent tous être inspectés. Vous utilisez ensuite un processus d'élimination pour réduire cette liste. Alternativement, vous pouvez effectuer une trace directe à partir de ce point, mais encore une fois si le bloc de code se ramifie à de nombreux endroits, cela peut également être un problème.
Vous devez réduire les directions de position en ne suivant pas les chemins qui ne seraient clairement pas exécutés pour la fonction. Dépasser ce code et ne placer que des points d'arrêt là où ils sont probablement liés à la fonctionnalité.
Le débogage du point intermédiaire nécessite souvent des fonctionnalités IDE plus avancées. La possibilité de voir la hiérarchie du code et les dépendances. Sans ces outils, c'est difficile à faire.
Avantages et inconvénients
- Les points médians sont souvent le premier morceau de code qui vous vient à l'esprit lorsque vous pensez à la fonctionnalité. Vous vous dites "Ah, ça doit utiliser XXXX pour fonctionner."
- Les points intermédiaires peuvent révéler les points de départ les plus faciles.
- Les points médians peuvent être un moyen facile de retrouver la trace d'une entité lorsqu'elle est perdue par des changements de synchronisation ou de thread.
- Les points intermédiaires peuvent vous amener à coder que vous ne connaissez pas. Vous coûter du temps pour apprendre ce qui se passe.