Débogage d’un programme de robot

Inévitablement, un programme ne se comportera pas de la façon dont nous nous attendons à ce qu’il se comporte. Lorsque cela se produit, il devient nécessaire de comprendre pourquoi le programme fait ce qu’il fait, afin que nous puissions lui faire faire ce que nous voulons qu’il fasse, à la place. Un tel comportement indésirable du programme est appelé « bogue », et ce processus est appelé « débogage ».

Un débogueur est un outil utilisé pour contrôler le flux du programme et surveiller les variables afin d’aider au débogage d’un programme. Cette section décrit comment configurer une session de débogage pour un programme de robot FRC®.

Note

Pour les utilisateurs débutants qui ont besoin de déboguer leurs programmes, mais ne savent pas/n’ont pas le temps d’apprendre à utiliser un débogueur, il est souvent possible de déboguer un programme simplement en imprimant l’état du programme pertinent à la console. Cependant, il est fortement recommandé que les élèves finissent par apprendre à utiliser un débogueur.

Exécution du Débogueur

Exécution du débogueur via la palette de commandes.

Appuyez sur Ctrl+Shift+P et tapez WPILib ou cliquez sur WPILib Menu Item pour ouvrir la palette de commandes avec WPILib pré-rempli. Tapez Debug et sélectionnez l’élément de menu Debug Robot Code pour démarrer le débogage. Le code sera téléchargé sur le roboRIO et commencera le débogage.

Points d’interruption

Un point d’interrogation ou « point d’arrêt » est une ligne de code à laquelle le débogueur suspendra l’exécution du programme afin que l’utilisateur puisse examiner l’état du programme. Ceci est extrêmement utile lors du débogage, car cela permet à l’utilisateur de suspendre le programme à des points spécifiques du code problématique pour déterminer où exactement le programme s’écarte du comportement attendu.

Le débogueur s’arrêtera automatiquement au premier point d’arrêt qu’il rencontre.

Configuration d’un point d’interruption

Où placer le curseur pour créer un point d’arrêt.

Cliquez dans la marge gauche de la fenêtre du code source (à gauche du numéro de ligne) pour définir un point d’arrêt dans votre programme utilisateur : un petit cercle rouge indique que le point d’arrêt a été défini sur la ligne correspondante.

Débogage avec des instructions d’impression

Une autre façon de déboguer votre programme consiste à utiliser des instructions d’impression dans votre code et à les afficher à l’aide du RioLog dans Visual Studio Code ou de la Driver Station. Les instructions imprimées doivent être ajoutées avec précaution car elles ne sont pas très efficaces, surtout lorsqu’elles sont utilisées en grande quantité. Ils doivent être supprimés pour la compétition car ils peuvent provoquer des dépassements de boucle.

System.out.print("example");
wpi::outs() << "example\n";

Débogage avec NetworkTables

Les NetworkTables peuvent être utilisées pour partager les informations du robot avec votre ordinateur de débogage. Les NetworkTables peuvent être visualisées avec votre tableau de bord préféré ou avec OutlineViewer. Un avantage de NetworkTables est que des outils comme Shuffleboard peuvent être utilisés pour analyser graphiquement les données. Ces mêmes outils peuvent ensuite être utilisés avec les mêmes données pour fournir ultérieurement une interface opérateur pour vos pilotes.

Apprendre encore plus

  • Pour en savoir plus sur le débogage avec VS Code, consultez ce lien.

  • Certaines des fonctionnalités mentionnées dans cet article VS Code vous aideront à comprendre et à diagnostiquer les problèmes liés à votre code. La fonction Quick Fix (ampoule jaune) peut être très utile avec une variété de problèmes, y compris ce qu’il faut importer.

  • L’un des meilleurs moyens d’éviter d’avoir à déboguer autant de problèmes est de faire des tests unitaires.

  • Vérifier que votre robot fonctionne dans Simulation est également un excellent moyen d’éviter d’avoir à effectuer un débogage complexe sur le robot réel.