1. Obtenez le numéro de processus du programme que vous souhaitez déboguer
2. Pour déboguer le programme en cours d'exécution avec gdb, la commande est la suivante :
gdb attach 100717
3. Pour afficher les threads en cours d'exécution, la commande est la suivante :
fils d'information
Comme vous pouvez le constater, 20 threads sont actuellement en cours d'exécution.
4. Vérifiez les informations de base de chaque thread, afin de savoir dans quel thread mon répertoire de lecture s'exécute. La commande suivante :
thread apply all bt
Je peux clairement savoir que le thread 4 est le thread que je souhaite déboguer
5. Entrez dans le thread de débogage et vérifiez l'état d'exécution, la commande est la suivante :
t 4
Faut-il passer au fil n° 4 ?
bt
Vérifier l'état de la pile du thread actuel
On peut voir que le thread est bloqué sur msisdn.c:920 , il y a une boucle while, alors définissez un point d'arrêt et laissez le programme s'exécuter à nouveau.
Le point clé ici est la commande c, qui permet au programme de continuer à s'exécuter, car après avoir gdb, le programme s'est arrêté. Vous pouvez ensuite utiliser single step et next pour vérifier vos variables mémoire.