Je me demandais quelles sont les techniques pour localiser quel code implémentait une fonctionnalité spécifique, sur une application de bureau.
Je suis un développeur junior, avec seulement une expérience de programmation professionnelle se situant autour de la programmation Web. Sur le Web, il est plus facile de le faire. Par exemple, vous "inspectez" un bouton avec les outils du navigateur et vous pouvez voir ce qui se fait lorsque vous cliquez dessus. Et puis, en supposant que vous disposez du code source complet, vous pouvez explorer la hiérarchie des appels.
Mais comment faites-vous cela dans les applications de bureau? Au moins, sans avoir à plonger dans la base de code complète?
debugging
desktop-application
py_script
la source
la source
Réponses:
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
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
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
la source
En supposant que la fonctionnalité est liée à quelque chose d'interface utilisateur, comme un bouton ou un menu, ce que j'ai tendance à faire suit (très fastidieux mais cela fonctionne). C'est en parcourant le code source, sans utiliser de débogueur .
SUPER_BUTTON_3 = "Super Feature X3"
. Pour référence future, n'oubliez pas ce nom de fichier.Comme l'a noté @amon, parfois un débogueur est plus simple ...
la source
Si vous pouvez trouver un code connexe, vous pouvez utiliser votre logiciel de contrôle de source pour vous montrer le commit complet ou les commits à proximité qui l'ont ajouté. Cela devrait vous montrer tout ce qui était nécessaire pour implémenter cette fonctionnalité.
Un moyen facile de trouver un point de départ à rechercher serait de parcourir votre base de code à la recherche du texte sur le bouton.
Souvent, les gens mettent un identifiant de problème depuis leur outil de suivi des problèmes dans leurs messages de validation. Si vous pouvez trouver un problème décrivant la demande de fonctionnalité, vous pouvez rechercher des validations avec cet identifiant de problème.
la source