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.

È stato utile?

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

  1. Dichiara una variabile locale
  2. Inizializza la variabile
  3. 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.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top