Classe constructeur jamais exécuté en mode release
-
05-07-2019 - |
Question
Exactement ce que dit le titre. J'utilise MSVC ++ 2008 express et le constructeur de ma classe n'est jamais exécuté lorsqu'il est compilé en mode de publication. Cela fonctionne en mode débogage.
Je fais quelque chose comme:
ClassTest test;
test.DoIt();
Les points d'arrêt sur le déclencheur DoIt ();
, mais les points d'arrêt sur ClassTest :: ClassTest ();
ne le font pas.
La solution
Juste une pensée - cela pourrait être l'optimisation du compilateur en mode Release qui empêche le point d'arrêt d'être touché. Cela peut arriver si le constructeur ne fait rien (c'est-à-dire que c'est un no-op). Essayez d’ajouter quelques instructions simples au constructeur, par exemple
.- Déclarer une variable locale
- Initialise la variable
- Utilisez-le d'une certaine manière (par exemple, imprimez-le)
Ajoutez ensuite un point d'arrêt à l'étape (3) ci-dessus et vérifiez si ce point d'arrêt est atteint.
Vous pouvez voir toutes sortes de problèmes de débogage étranges avec la façon dont les points d'arrêt sont atteints en mode de publication, en raison des optimisations apportées.