Afficher et accéder aux threads dans GDB

Afficher et accéder aux threads dans GDB
Un autre nom pour un débogueur serait un utilitaire de débogage. En repérant les problèmes de code à différentes phases d'un système d'exploitation ou une création d'applications, il est considéré comme un programme informatique qui peut améliorer le processus de création d'un logiciel. Un essai peut être examiné par certains débogueurs pour déterminer quelles sections de code ont été ignorées. Le débogueur GNU est l'un des nombreux outils de débogage disponibles pour les programmeurs C et est le plus grand outil de débogage. Il propose des outils qui permettent à l'utilisateur de voir et d'évaluer un programme pendant qu'il est exécuté. Une autre excellente fonctionnalité de débogage consiste à soutenir de nombreux langages de programmation, notamment C, C ++, ADA, Fortron et Pascal. Les fonctionnalités suivantes sont disponibles via GDB lors du débogage des applications multipliées:
  • Il peut envoyer automatiquement des notifications pour les threads nouvellement créés.
  • Il offre la possibilité d'utiliser la commande thread-no pour basculer entre plusieurs threads.
  • La commande «Info Threads» peut être utilisée pour savoir s'il y a des threads actifs.
  • En utilisant la commande «Thread Appliquer [Threadno] [All] Args», nous pouvons envoyer la même commande à plusieurs threads (ou une inclinaison de threads).
  • Pour déterminer ce qui se passe lorsque votre code de programme se bloque pendant l'exécution, sonde à l'intérieur de vos applications C.
  • Seuls les fichiers binaires ou exécutables créés pendant le processus de compilation sont compatibles avec le débogueur GDB.

Tapez simplement GDB dans la fenêtre du terminal pour accéder au GDB de votre système d'exploitation sur Ubuntu ou tout autre système d'exploitation Linux ou Unix. La capture d'écran de la commande GDB est indiquée dans l'illustration suivante. Il montre les détails du droit d'auteur du GDB. L'invite ouverte de GDB indique les informations concernant le moment où il est prêt à accepter les commandes. Sur certaines configurations GDB dans lesquelles le système d'exploitation permet aux threads, ces fonctionnalités ne sont pas encore accessibles. Ces instructions n'ont aucun impact sur GDB qui ne permet pas le threading. Par exemple, un système qui n'a pas de support de thread ignore le résultat de la requête «Info Threads» et ignore constamment l'instruction du thread.

Il vous suffit de taper la commande «quit» dans le terminal GDB pour quitter et terminer votre session actuelle de GDB. Vous pouvez voir l'instruction de quitter sur le débogueur GDB comme indiqué dans ce qui suit:

Le débogueur GDB a proposé de nombreuses commandes de débogueur. Voici quelques exemples de commandes répertoriées que nous pouvons essayer d'utiliser le débogueur GDB:

  1. Exécuter ou r -> Il termine l'exécution du programme du début à la fin.
  2. pause ou b -> Il est utilisé pour placer un point d'arrêt sur une certaine ligne ou phrase.
  3. Désactiver -> Il désactive un point d'arrêt qui a été marqué précédemment.
  4. Activer -> Il permet un point d'arrêt désactivé.
  5. Next ou n -> La ligne de code suivante est exécutée, mais évitez d'aller directement dans les fonctions.
  6. Étape -> Vous devriez passer à l'instruction suivante et commencer à terminer la fonction.
  7. Liste ou L -> Il affiche le code complet du fichier C.
  8. imprimer ou p -> Il est utilisé pour imprimer la valeur qui a été enregistrée plus tôt.
  9. Quitter ou Q -> Il sort de l'écran de débogueur GDB.
  10. Clear -> Il est utilisé pour supprimer tous les points d'arrêt marqués.
  11. Continuer -> Il est utilisé pour continuer à exécuter normal du programme.

Exemple:
Voici un petit morceau de code qui utilise plusieurs threads, les crée avec la méthode pthread_create et transmet les méthodes des threads. Le programme d'échantillon a une fonction principale () qui crée deux threads dans l'illustration suivante. Il y a maintenant trois threads en cours d'exécution, y compris le fil Parent / Original Main (). La fonction Main () utilise la fonction PTHEAD_CREATE () pour créer les threads et les appeler les uns après l'autre.

La boucle while est vérifiée dans le code suivant pour voir si la valeur de la variable Count1 est inférieure à 500. Si c'est le cas, l'instruction PRINT est exécutée pour afficher une chaîne «Thread 1 est en cours d'exécution» à côté de la variable Count. Le thread est joint immédiatement après avoir utilisé la commande pthread_ join () Fonction dans ce code.

Utilisez les commandes énumérées suivantes pour compiler le code à l'aide du compilateur GCC et afficher l'activité du thread avec le débogueur du PIB. L'image suivante est une capture d'écran qui montre que le code précédent est compilé avec succès:

gcc -g multithreads.c -o multithreads -lpthread

Tout en utilisant Ubuntu 20.04 Système, tapez la commande suivante sur l'écran du terminal pour voir et examiner le thread.

$ gdb ./ Multithreads

Maintenant, nous sommes en mode de débogage GDB, grâce à la fenêtre du terminal. Pour établir les points d'arrêt sur la principale, utilisez le thread deux et le fil trois routines de chaque fil nouvellement formé. Pour insérer un point d'arrêt, nous utilisons le code répertorié suivant. C'est une commande simple; Tapez juste la pause. Après cela, écrivez le nom des méthodes de thread pour insérer les points d'arrêt. Cette méthode affiche le numéro de ligne où les points d'arrêt ont été ajoutés après être entrés.

Pour exécuter le programme, utilisez le mot clé «Exécuter» ou le simple «R» comme commande sur l'écran du terminal. Un aperçu des threads du programme et des informations sur leur état actuel sont fournis par les fils d'information de commande, car vous devriez prendre note de. Il n'y a eu qu'un seul fil a commencé dans ce cas jusqu'à présent.

L'exécution doit continuer à utiliser la commande suivante:

Deux autres fils commencent à cet endroit. Le fil qui est actuellement mis au point est désigné par une étoile. De plus, le point de rupture défini pour les threads nouvellement formés dans leurs méthodes d'initialisation est atteint - Thread Two () et Thread Three (), spécifiquement. Utilisez la commande pour déplacer la mise au point vers un autre thread avant de démarrer un débogage de threads réel. À la ligne 17 de sa fonction Thread Two, Thread 2 () s'arrête.

Selon la sortie des «threads d'information», le thread deux imprime brièvement le compteur de comptoir2 puis quitte le thread 2 à la ligne 17. De même, nous pouvons faire fonctionner le thread «thread_three» en utilisant une manière assez similaire que nous avons utilisée pour le thread_two.

Conclusion

Pour résumer, nous pouvons enfin utiliser le débogueur GDB dans notre Ubuntu 20.04 Système Linux. Pour cela, nous avons expliqué son utilisation dans le paragraphe d'introduction et répertorié certaines des principales fonctionnalités qui nous sont fournies et en faire un débogueur unique.