0

最近、VS2010 Express C++ の非常に奇妙な動作に遭遇しました。

完璧に動作していた私たちのアプリは、小さなエディタ ウィンドウであるにも関わらず、フル スクリーンにレンダリングされるなど、突然、デバッグ モードで予期しない動作を示しました。

私たちが発見したのは、デバッグモードのコード最適化を「非アクティブ化」(/Od) から「プロジェクトのデフォルト」に切り替えることで、新しい動作を無効にできることでした。

これは特に、コードの再構築が進行中であるためにデバッグがほとんど不可能になっていなければ、特に悪いことではありません。そのため、ブレークポイント、ステップスルー、値の確認は無意味です。デバッガーは、変数の正しい値を理解することさえできなくなりました (これは単に論理的なことです)。

なので、どうしようかかなり迷っています。そもそもなぜ失敗し、なぜデバッグモードで最適化されたプログラムが必要なのですか?

また、おかしなことではありませんが、テンプレート パラメーターを引き渡さないことがコンパイラによって認識されず、一部のコードがサイレントに失敗するという C++ コンパイラのバグが発生しました。

4

2 に答える 2

0

プロジェクトのデフォルトはデバッグ モードのデフォルトではなく、実際にはリリース モードのデフォルトです。プロジェクトのデフォルトは、デバッグ/リリース構成について認識していません。オーバーライド /Od は、デバッグ構成の既定の設定です。デバッグ構成のすべてのプロジェクト プロパティをデフォルトにリセットした場合は、デバッグ構成をリリース モードとほとんど同じに設定したことになります。

デバッグ/リリース構成について特別なことは何もありません。それらは単なる名前であるため、プロジェクトのプロパティにはそれぞれの特別なデフォルトは含まれていません。

于 2012-11-19T11:21:06.210 に答える
0

戻り値の最適化のようなものを考えてください。また、コードの最適化がオンになっているときにコンパイラが作成を回避する一時オブジェクトも探します。C++ lintアプリケーションを使用して、デバッグ モードでコードが正しく動作しない理由の一部を取り除くことができるかもしれません。

于 2012-11-19T11:23:53.707 に答える