Costruttore di classe mai eseguito in modalità di rilascio
-
05-07-2019 - |
Domanda
Esattamente quello che dice il titolo. Sto usando MSVC ++ 2008 express e il mio costruttore di classi non viene mai eseguito quando compilato in modalità di rilascio. Funziona in modalità debug.
Sto facendo qualcosa del tipo:
ClassTest test;
test.DoIt();
Punti di interruzione su DoIt ();
, ma punti di interruzione su ClassTest :: ClassTest ();
no.
Soluzione
Solo un pensiero: potrebbe essere l'ottimizzazione del compilatore in modalità di rilascio che impedisce di colpire il breakpoint. Ciò potrebbe accadere se il costruttore non sta facendo nulla (ovvero non è un operatore). Prova ad aggiungere alcune semplici istruzioni al costruttore, ad esempio
- Dichiara una variabile locale
- Inizializza la variabile
- Utilizzalo in qualche modo (ad es. stampalo)
Quindi aggiungere un punto di interruzione nel passaggio (3) sopra e vedere se quel punto di interruzione viene raggiunto.
Puoi vedere tutti i tipi di strani problemi di debug con il modo in cui i breakpoint vengono colpiti in modalità Release, a causa delle ottimizzazioni che vengono fatte.