Je ne sais pas comment expliquer le comportement que je vois, mais voilà.Optimisation du compilateur MS qui remplace les variables dans une fonction?
J'ai une fonction foo qui prend trois paramètres, un pointeur, un int, et un autre pointeur. Quand je casse à l'intérieur de foo, je peux clairement voir que toutes les variables sont les valeurs qu'elles devraient être. Cependant, lorsque je descends au-delà des déclarations de variables locales, l'un des paramètres (l'int) passe soudainement à zéro. Cependant, le reste de la fonction s'exécute comme s'il s'agissait de la valeur d'origine, donc tout va bien.
Cela ne se produit pas dans le débogage complet, mais se produit dans le débogage régulier. Est-ce une sorte d'optimisation? Si oui, comment s'appelle-t-il et où puis-je obtenir les détails?
Exemple:
void foo(void *A, int B, void *C)
{
// B == 5
int X = 3;
char *Y = getSomeStaticString();
// ... some other variable declarations like the above
// B, according to the debugger, is now 0
if (B == 5) {
// But this still executes
}
}
Ça y était! Merci – Sydius