0

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

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

ClassTest test;
test.DoIt();

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

4

1 に答える 1

5

ちょっと考えてみてください - ブレークポイントに到達するのを妨げているのは、リリース モードでのコンパイラの最適化である可能性があります。これは、コンストラクターが何もしていない場合 (つまり、ノーオペレーションの場合) に発生する可能性があります。コンストラクターにいくつかの簡単なステートメントを追加してみてください。

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

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

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

于 2008-10-29T23:01:19.583 に答える