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.

Était-ce utile?

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

.
  1. Déclarer une variable locale
  2. Initialise la variable
  3. 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.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top