質問

正確にタイトルが言うこと。 MSVC ++ 2008 Expressを使用していますが、リリースモードでコンパイルしたときにクラスコンストラクターが実行されることはありません。デバッグモードで動作します。

次のようなことをしています:

ClassTest test;
test.DoIt();

DoIt(); のブレークポイントはトリガーしますが、 ClassTest :: ClassTest(); のブレークポイントはトリガーしません。

役に立ちましたか?

解決

考えてみてください-ブレークポイントをヒットさせないのは、リリースモードでのコンパイラの最適化かもしれません。これは、コンストラクターが何もしていない場合に発生する可能性があります(つまり、何もしません)。コンストラクターにいくつかの簡単なステートメントを追加してみてください。例:

  1. ローカル変数の宣言
  2. 変数の初期化
  3. 何らかの方法で使用する(例:印刷する)

次に、上記のステップ(3)にブレークポイントを追加し、そのブレークポイントにヒットするかどうかを確認します。

最適化が行われているため、リリースモードでブレークポイントがヒットする方法に関するあらゆる種類の奇妙なデバッグの問題を確認できます。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top