Pregunta

Exactamente lo que dice el título. Estoy usando MSVC ++ 2008 express, y mi constructor de clases nunca se ejecuta cuando se compila en modo de lanzamiento. Funciona en modo de depuración.

Estoy haciendo algo como:

ClassTest test;
test.DoIt();

Puntos de interrupción en DoIt (); disparador, pero los puntos de interrupción en ClassTest :: ClassTest (); no lo hacen.

¿Fue útil?

Solución

Solo un pensamiento: podría ser la optimización del compilador en el modo Release que impide que se alcance el punto de interrupción. Esto podría suceder si el constructor no está haciendo nada (es decir, no es una operación). Intente agregar algunas declaraciones simples al constructor, por ejemplo,

  1. Declarar una variable local
  2. Inicializar la variable
  3. Úselo de alguna manera (por ejemplo, imprímalo)

Luego agregue un punto de interrupción en el paso (3) de arriba, y vea si ese punto de interrupción se ha alcanzado.

Puedes ver todo tipo de extraños problemas de depuración con la forma en que se alcanzan los puntos de interrupción en el modo de lanzamiento, debido a las optimizaciones que se realizan.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top