web-dev-qa-db-fra.com

Comment utiliser le débogueur MinGW gdb pour déboguer un programme C ++ dans Windows?

J'ai cherché de la documentation à ce sujet et je n'ai rien trouvé. J'ai installé MinGW et cela fonctionne très bien. Je ne sais tout simplement pas comment utiliser le débogueur.

Étant donné un code simple, disons dans un fichier appelé "mycode.cpp":

int main()
{
    int temp = 0;

    for (int i = 0; i < 5; ++i)
        temp += i;

    return 0;
}

... comment pourrais-je déboguer cela. Quelles sont les commandes que j'utilise pour déboguer du code avec MinGW et GDB dans Windows? Puis-je parcourir le code via la ligne de commande comme dans Visual Studio? Si oui, quelles commandes dois-je utiliser pour ce faire?

Existe-t-il des tutoriels pour utiliser GDB? Je ne pouvais pas en trouver, mais si quelqu'un pouvait me diriger vers celui-là, ce serait génial aussi. J'en ai assez d'écrire des tonnes de std::cout instructions pour déboguer du code complexe.

31
Mike Webb

La première étape consiste à compiler votre programme avec -g pour inclure des informations de débogage dans l'exécutable:

g++ -g -o myprog.exe mycode.cpp

Ensuite, le programme peut être chargé dans gdb:

gdb myprog.exe

Quelques commandes pour vous aider à démarrer:

  • break main provoquera la rupture du débogueur lorsque main sera appelé. Vous pouvez également interrompre les lignes de code avec break FILENAME:LINENO. Par exemple, break mycode.cpp:4 interrompt l'exécution chaque fois que le programme atteint la ligne 4 de mycode.cpp.
  • start démarre le programme. Dans votre cas, vous devez définir des points d'arrêt avant de démarrer le programme car il se ferme rapidement.

À un point d'arrêt:

  • print VARNAME. C'est ainsi que vous imprimez les valeurs des variables, qu'elles soient locales, statiques ou globales. Par exemple, dans la boucle for, vous pouvez taper print temp pour afficher la valeur de la variable temp.
  • step Cela équivaut à "entrer".
  • next ou adv +1 Passez à la ligne suivante (comme "step over"). Vous pouvez également passer à une ligne spécifique d'un fichier spécifique avec, par exemple, adv mycode.cpp:8.
  • bt Imprime une trace. Il s'agit essentiellement d'une trace de pile.
  • continue Exactement comme une opération "continue" d'un débogueur visuel. Il provoque l'exécution du programme jusqu'à ce que le prochain point d'arrêt ou le programme se termine.

La meilleure chose à lire est le manuel d'utilisation de GDB .

41
Daniel Trebbien

Il y a quelques gdb guis pour windows dans cette question version Windows du DDD frontal GDB

Bien que DDD n'ait pas été porté

5
Martin Beckett