QCM GDB

De Ensiwiki
Aller à : navigation, rechercher

1. GDB permet

D'exécuter un programme pas à pas
De trouver automatiquement les bugs d'un programme
Et non, ça serait trop beau ...
D'afficher les valeurs de variables pendant l'exécution
D'appeler des fonctions à n'importe quel moment
Par exemple, print f(12) ou call f(12)
De trouver facilement la ligne de code sur laquelle un programme fait Segmentation Fault

2. Avec GDB, pour afficher la pile d'appels de fonctions, on peut faire

backtrace
where
stack

3. Avec GDB, si le curseur est sur un appel de fonction, pour lancer l'exécution de la fonction et s'arrêter sur la première instruction de la fonction, on peut faire

next
Non, next va exécuter toute la fonction, et s'arrêter sur la ligne qui suit l'appel
step
s
Pour la plupart des commandes usuelles, on peut taper juste la première lettre de la commande. Par exemple, s pour step, p pour print, r pour run, n pour next, ...

4. Valgrind permet

de trouver les accès mémoire invalides
C'est même son principal rôle
de trouver des fuites mémoires
Il le fait par défaut, mais donne plus de détails avec --leak-check=full
De lancer GDB quand il trouve un erreur
Avec l'option --db-attach=yes
De faire du profiling (analyse de performance)
Mais là, on sort du cadre du cours !

5. Avec GDB, après avoir entré une commande, si j'appuie sur la touche entrée sans avoir saisi de commande ...

Il ne se passe rien
J'ai une erreur
La dernière commande est ré-exécutée
Et c'est très pratique pour faire du pas à pas : on entre une fois next, ou n, et on appuie autant de fois que nécessaire sur entrée

Votre pointage est 0 / 0