Compilateurs

Lorsqu'on examine au débogueur un programme compilé avec optimisation, certaines variables apparaissent parfois comme « non affichables ». Quelle en est la principale raison ?

  1. AL'optimisation empêche totalement le débogueur de charger le programme
  2. BLes valeurs des variables changent aléatoirement à chaque compilation
  3. CLa valeur ne subsiste plus, du fait de la réutilisation des registres ou de la suppression de calculs
Afficher la réponse et l'explication

Réponse : C. La valeur ne subsiste plus, du fait de la réutilisation des registres ou de la suppression de calculs

L'optimisation traite les variables uniquement en registres sans les placer en mémoire, et réutilise ces registres pour d'autres valeurs une fois la variable devenue inutile. La propagation de constantes peut aussi faire disparaître le calcul lui-même. Au point d'arrêt du débogueur, la valeur de la variable peut donc ne subsister nulle part, d'où un affichage du type « supprimée par l'optimisation ». Pour déboguer, on réduit généralement l'optimisation ou l'on utilise un réglage d'optimisation adapté au débogage. Le débogueur reste capable de charger le programme.

S'entraîner sur ce thème Retour au thème

Autres questions sur Compilateurs

  1. Après application poussée de la propagation de constantes, du repliement de constantes et de la suppression de code mort à la fonction ci-dessus, quelle valeur renvoie la fonction et quel code subsiste ?
  2. Quel est le rôle de l'analyse lexicale d'un compilateur ?
  3. Que fait l'analyse syntaxique d'un compilateur ?
  4. Quel exemple d'erreur détectée par l'analyse sémantique d'un compilateur est le plus approprié ?
  5. Quelle caractéristique de l'arbre syntaxique abstrait (AST) est correcte ?

Comparatifs sur ce thème