1

C++デバッグしたいコードがいくつかあります。よくあることですが、私のバグは、小さなデータセットでは再現できない特定の条件でのみ発生し、複数の機能を実行した後に発生し、確実に機能します。

特に、プリプロセッサ ディレクティブを使用している場合でも、最初にすべてのデータをstd::set非常に遅いdebug mode(そしてリリースが妥当な)に配置する必要があります。_ITERATOR_DEBUG_LEVEL 0そのため、デバッグ モードではコードの関連するバグのある部分のみを実行しながら、リリースではコードの一部を実行する方法があったのではないかと考えていました。

私は次のようなことを試みました:

#ifdef _DEBUG
#undef _DEBUG
#define MODIFIED_DEBUG
#define NDEBUG
#endif

// build my expensive datastructure etc. etc.

#ifdef MODIFIED_DEBUG
#undef MODIFIED_DEBUG
#undef NDEBUG
#define _DEBUG
#endif

// execute my buggy code

ただし、これは依然として と同じくらい遅いdebug modeです。release modeコードの一部のみの速度を取得する (簡単な) 方法はありますか? 特に、遅いのは主にSTL.

(リリース時にデータ構造を構築する をコンパイルし.lib、デバッグ モードでコード内のライブラリを使用することはできると思いますが、プログラムをデバッグするだけでもかなり面倒です!)。または、デバッグモードで_ITERATOR_DEBUG_LEVEL 0高速化するための定義のようなトリックはありますか? STLを使用してVisual Studio 2010います。

4

1 に答える 1

2

リリース モードでビルドし、疑わしいコードを次のコードで囲むことができます。

#pragma optimize("",off)
//...
#pragma optimize("",on)

または、昔ながらの方法で実行します-ステートメントをデバッグします。

于 2013-02-05T22:04:20.930 に答える