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 ?
- AL'optimisation empêche totalement le débogueur de charger le programme
- BLes valeurs des variables changent aléatoirement à chaque compilation
- 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.